
Estoy usando Puppetlabs/Apache para configurar Apache. En el archivo principal de Puppet, lo llamo y lo configuro:
class { '::apache': }
class { '::apache::mod::fastcgi': }
apache::vhost { "${::fqdn} non-ssl":
servername => $::fqdn,
port => '2222',
docroot => "/var/www/${root}",
priority => 10,
}
El apache::mod::fastcgi
manifiesto funciona a la perfección... con un inconveniente: PHP de alguna manera todavía se ejecuta en (cli)
el modo:
vagrant@wp:/etc/apache2/mods-enabled$ php -v
PHP 5.5.12-1+deb.sury.org~precise+1 (cli) (built: May 8 2014 21:04:38)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
with Zend OPcache v7.0.4-dev, Copyright (c) 1999-2014, by Zend Technologies
with Xdebug v2.2.3, Copyright (c) 2002-2013, by Derick Rethans
Para confirmar eso, agregué una phpinfo()
llamada al phpinfo.php
archivo a, verifiqué php /path/to/phpinfo.php | less
y Service API
todavía está en cli
.
Cuando miro /etc/apache2/mods-enabled
, puedo ver fastcgi.conf
y fastcgi.load
. Revisé el contenido sudo nano fastcgi.conf/load
- que proviene delfastcgi.conf.erb
plantilla del módulo:
# ===> fastcgi.conf
# The Fastcgi Apache module configuration file is being
# managed by Puppet and changes will be overwritten.
<IfModule mod_fastcgi.c>
AddHandler fastcgi-script .fcgi
FastCgiIpcDir "/var/lib/apache2/fastcgi"
</IfModule>
# ===> fastcgi.load
adModule fastcgi_module /usr/lib/apache2/modules/mod_fastcgi.so
Nota: Hay unvhosts.erb
plantillatambién, que tiene unsubplantilla_fastcgi.erb
que construye el bloque FastCGI para la plantilla vhosts.
Cuando intento configurarlo (lo que Puppetlabs/Apache::mod::fastcgi ya debería haber hecho) sudo a2enmod fastcgi alias
, obtengo la siguiente respuesta (en la CLI):
Module fastcgi already enabled
Module alias already enabled
Y cuando reviso /etc/apache2/sites-enabled
el contenido con sudo nano 15-default.conf
, veo lo siguiente:
<VirtualHost *:80>
# ...
## Script alias directives
ScriptAlias /cgi-bin/ "/usr/lib/cgi-bin"
</VirtualHost>
Luego cambié al root
usuario /main sudo su
y verifiqué el directorio al que se hace referencia en el fastcgi.conf
archivo: /var/lib/apache2/fastcgi
. Solo tiene un contenido: una carpeta vacía llamada dynamic
. ¿Podría ser esta la fuente del problema: una biblioteca FastCGI vacía?
Realmente no puedo entender cómo se puede habilitar y ejecutar FastCGI, pero sigo leyendo, ese cli
es el modo en el que estoy ejecutando PHP.
Editar 1
Acabo de comprobar si php-fpm
se está ejecutando:
vagrant@wp:/etc/apache2/conf.d$ ps -ef | grep php-fpm
root 935 1 0 15:58 ? 00:00:00 php-fpm: master process (/etc/php5/fpm/php-fpm.conf)
www-data 982 935 0 15:58 ? 00:00:00 php-fpm: pool www
www-data 983 935 0 15:58 ? 00:00:00 php-fpm: pool www
vagrant 2760 2605 0 19:40 pts/2 00:00:00 grep --color=auto php-fpm
También reinicié php5-fpm
los apache2
servicios manualmente, pero con el mismo resultado.
sudo service php5-fpm restart
sudo service apache2 restart
php -v
# still: (cli)
Si supiera lo que falta, podría reescribir manualmente la httpd.conf.erb
plantilla o simplemente incorporar las piezas que faltan y usar las plantillas predeterminadas de puppetlabs/apache, comoesta es una opción para el módulo. Lo mismo va para'/etc/apache2/mods-available'
o el'/etc/apache2/sites-available'
directorio
Respuesta1
Primero: si ejecuta php -v en el shell, siempre obtendrá la versión cli. Porque estás en la interfaz de línea de comando...
¿Cómo instalaste tu módulo php-fpm? ¿Qué modo usaste? (tcp o sock?) ¿Ya configuraste un vhost? => no es el predeterminado: verifique el directorio habilitado para sitios, debería haber un archivo con $fqdn ($fqdn significa su nombre de dominio completo, como ejemplo.com)
con Apache 2.4 y mod_proxy_fcgi puedes pasar fácilmente solicitudes .php a tu grupo de FPM a través de la configuración de vhost:
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/path/to/your/documentroot/$1
=> verifique su vhost si existe tal directiva