Manejador php basado en Fastcgi
Mod_fastcgi es un módulo de apache que permite que apache se comunique con aplicaciones habilitadas para fastcgi. Se puede usar para ejecutar código php sobre fastcgi a través del binario php-cgi que está habilitado para fastcgi.
Fastcgi tiene muchas mejoras sobre el modelo cgi tradicional de ejecutar programas externos dentro de un servidor web. Con fastcgi, varios procesos se mantienen vivos y cada proceso se reutiliza para atender múltiples solicitudes una tras otra. Hay configuraciones para controlar la cantidad máxima de solicitudes que un proceso puede atender, después de lo cual el proceso finaliza y se inicia uno nuevo.
Instalar los paquetes
Lo primero que debe hacer es instalar los paquetes necesarios desde synaptic. Necesitamos instalar el servidor apache, mod_fastcgi, mpm worker y php junto con el binario cgi. Tenga en cuenta que si ya tiene php instalado con mpm prefork y mod-php, se eliminará al instalar estos paquetes
$ sudo apt-get install apache2 libapache2-mod-fastcgi apache2-mpm-worker php5 php5-cgi
En ubuntu, el archivo de configuración de apache ubicado en
/etc/apache2/sites-enabled/000-default
El binario php cgi se encuentra en /usr/bin/php-cgi.
Configurar fastcgi
Después de instalar los paquetes, es hora de configurar apache para usar mod_fastcgi para ejecutar scripts php. Al igual que cgi, fastcgi también ejecutará procesos php usando el binario php-cgi.
Primero habilite el módulo fastcgi con el comando a2enmod
$ sudo a2enmod fastcgi
El comando a2enmod copia el archivo de configuración del módulo desde /etc/apache2/mods-disponible al directorio /etc/apache2/mods-enabled . El archivo de configuración en este caso es fastcgi.conf. Se parece a esto
<IfModule mod_fastcgi.c> AddHandler fastcgi-script .fcgi FastCgiIpcDir /var/lib/apache2/fastcgi </IfModule>
Mod_fastcgi registra un controlador llamado fastcgi-script con apache. Esto se puede usar para especificar qué programas ejecutar a través de mod_fastcgi.
Bien, sigamos. Lo siguiente es configurar el vhost relevante para ejecutar php usando el controlador fastcgi. Coloque la siguiente configuración dentro del bloque vhost deseado en el archivo de configuración de apache.
<Ifmodule mod_fastcgi.c> FastCgiServer /usr/local/bin/php-fastcgi-wrapper -processes 10 -restart-delay 1 -init-start-delay 1 -pass-header HTTP_AUTHORIZATION Alias /binary /usr/local/bin <Location /binary/php-fastcgi-wrapper> Options ExecCGI SetHandler fastcgi-script </Location> AddHandler php-fastcgi .php Action php-fastcgi /binary/php-fastcgi-wrapper </IfModule>
El FastCgiServer registra /usr/local/bin/php-fastcgi-wrapper como la aplicación fastcgi con varias opciones.
Tenga en cuenta que este es un script de shell que iniciará el binario php-cgi con varias configuraciones. Tenga en cuenta que le pedimos a FastCgiServer que creara y administrara 10 procesos.
La línea AddHandler declara un nuevo controlador para archivos ".php" llamado php-fastcgi. Esto puede tener el nombre que desee.
La línea de acción le dice a apache que maneje el archivo php-fastcgi usando el programa cgi /cgi-bin/php-fastcgi-wrapper.
Ahora la ubicación /cgi-bin/php-fastcgi-wrapper no es real. Para que apunte a la ubicación real del script contenedor, se usa la directiva Alias. Apunta /cgi-bin a /usr/local/bin.
Guión de envoltura
Ahora viene el script contenedor que usará fastcgi para ejecutar php.
#!/bin/sh # Set desired PHP_FCGI_* environment variables. # Example: # PHP FastCGI processes exit after 500 requests by default. PHP_FCGI_MAX_REQUESTS=10000 export PHP_FCGI_MAX_REQUESTS PHP_FCGI_CHILDREN=5 export PHP_FCGI_CHILDREN # Replace with the path to your FastCGI-enabled PHP executable exec /usr/bin/php-cgi
Tenga en cuenta la configuración de PHP_FCGI_CHILDREN. Especifica que cada proceso php debe bifurcarse y administrar 5 procesos php secundarios más. Entonces, antes se le dijo a fastcgi que creara 10 procesos. El total es 10*5 =50 procesos. Hay 2 niveles de gestión de procesos en marcha. Mod_fastcgi administra 10 procesos php y cada proceso php administra además 5 procesos cada uno.
Este archivo se almacena en la siguiente ruta
/usr/local/bin/php-fastcgi-wrapper
Asegúrese de que el archivo sea ejecutable. Haz un chmod en él
/usr/local/bin# chmod +x php-fastcgi-wrapper
La ubicación del archivo no importa. El script contenedor es necesario para que varias opciones como PHP_FCGI_MAX_REQUESTS se puedan pasar al proceso php.
Ahora reinicie apache y pruebe la configuración abriendo un script php en el navegador. Ver el contenido de la variable $_SERVER en php. Debe contener [FCGI_ROLE] => RESPONDEDOR . Esto indica que fastcgi está en acción.
También verifique la tabla de procesos usando htop o System Monitor. Debería ver 50 procesos php-cgi ejecutándose.
Recurso
http://www.fastcgi.com/drupal/node/25
http://www.opensource.apple.com/source/apache_mod_php/apache_mod_php-12/php/sapi/cgi/README.FastCGI