Esta sección contiene información específica sobre la instalación de PHP con Lighttpd 1.4 en sistemas Unix.
Consulte » Lighttpd para una instalación correcta de Lighttpd antes de continuar.
FastCGI es el SAPI preferido para conectar PHP y Lighttpd. FastCGI activa automáticamente php-cgi.
Para configurar Lighttpd para que se conecte a PHP y llame al proceso FastCGI, se debe editar el fichero lighttpd.conf. Una conexión por sockets es la solución preferida para sistemas locales.
Ejemplo #1 Porción del fichero lighttpd.conf
server.modules += ( "mod_fastcgi" ) fastcgi.server = ( ".php" => (( "socket" => "/tmp/php.socket", "bin-path" => "/usr/local/bin/php-cgi", "bin-environment" => ( "PHP_FCGI_CHILDREN" => "16", "PHP_FCGI_MAX_REQUESTS" => "10000" ), "min-procs" => 1, "max-procs" => 1, "idle-timeout" => 20 )) )
La directiva bin-path permite a lighttpd llamar al proceso FastCGI
dinámicamente. PHP llamará a los hijos según la variable de entorno
PHP_FCGI_CHILDREN. La directiva bin-environment
define el entorno
para los procesos llamados. PHP terminará un proceso hijo cuando el
número de solicitudes especificado por PHP_FCGI_MAX_REQUESTS haya sido alcanzado.
Las directivas min-procs
y max-procs
pueden generalmente ser ignoradas
con PHP. PHP gestiona sus propios hijos y caches opcode como APC que comparte
únicamente los hijos gestionados por PHP. Si min-procs
se establece en algo
superior a 1, el número total de respuestas PHP será multiplicado por
PHP_FCGI_CHILDREN (2 min-procs * 16 hijos, da 32 respuestas).
Lighttpd proporciona un programa llamado spawn-fcgi para facilitar las llamadas a los procesos FastCGI.
Es posible llamar a los procesos sin spawn-fcgi, con un mínimo de configuración. La variable de entorno PHP_FCGI_CHILDREN controla el número de hijos que PHP llama para gestionar las solicitudes. La variable de entorno PHP_FCGI_MAX_REQUESTS determina la duración de vida, en número de solicitudes, de cada hijo. A continuación se muestra un script bash simple que ayuda a las llamadas a los gestores PHP.
Ejemplo #2 Llamada a los gestores FastCGI
#!/bin/sh # Ubicación del binario php-cgi PHP=/usr/local/bin/php-cgi # Ubicación del fichero PID PHP_PID=/tmp/php.pid # Enlace a una dirección #FCGI_BIND_ADDRESS=10.0.1.1:10000 # Enlace a un socket de dominio FCGI_BIND_ADDRESS=/tmp/php.sock PHP_FCGI_CHILDREN=16 PHP_FCGI_MAX_REQUESTS=10000 env -i PHP_FCGI_CHILDREN=$PHP_FCGI_CHILDREN \ PHP_FCGI_MAX_REQUESTS=$PHP_FCGI_MAX_REQUESTS \ $PHP -b $FCGI_BIND_ADDRESS & echo $! > "$PHP_PID"
Las instancias FastCGI pueden ser llamadas en múltiples máquinas remotas para distribuir las aplicaciones.
Ejemplo #3 Conexión a instancias remotas de php-fastcgi
fastcgi.server = ( ".php" => (( "host" => "10.0.0.2", "port" => 1030 ), ( "host" => "10.0.0.3", "port" => 1030 )) )