Habilite FastCGI en Apache con Puppetlabs/Apache

Habilite FastCGI en Apache con Puppetlabs/Apache

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::fastcgimanifiesto 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.phparchivo a, verifiqué php /path/to/phpinfo.php | lessy Service APItodavía está en cli.

Cuando miro /etc/apache2/mods-enabled, puedo ver fastcgi.confy fastcgi.load. Revisé el contenido sudo nano fastcgi.conf/load- que proviene delfastcgi.conf.erbplantilla 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.erbplantillatambién, que tiene unsubplantilla_fastcgi.erbque 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-enabledel 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 rootusuario /main sudo suy verifiqué el directorio al que se hace referencia en el fastcgi.confarchivo: /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 clies el modo en el que estoy ejecutando PHP.

Editar 1

Acabo de comprobar si php-fpmse 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-fpmlos apache2servicios 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.erbplantilla 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

información relacionada