Questa sezione contiene note e suggerimenti specifici per installazioni di PHP per Lighttpd 1.4 su sistemi Unix.
Si prega di utilizzare » Lighttpd trac per imparare come installare Lighttpd correttamente prima di continuare.
Fastcgi è il SAPI consigliato per connettersi a PHP e Lighttpd. Fastcgi è abilitato
automagicamente in php-cgi in PHP 5.3, ma per versioni precedenti è necessario
configurare PHP con --enable-fastcgi. Per avere conferma che PHP abbia fastcgi abilitato,
php -v dovrebbe contenere PHP 5.2.5 (cgi-fcgi)
Prima di PHP 5.2.3, fastcgi era abilitato sulla versione compilata di php (non esisteva alcun php-cgi).
Per configurare Lighttpd per la connessione con php e generare processi fastcgi, editare lighttpd.conf. Si consiglia di eseguire le connessioni ai processi fastcgi sul sistema locale tramite socket.
Example #1 Estratto di 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 direttiva bin-path consente a lighttpd di generare processi fastcgi dinamicamente. PHP genererà processi figli in accordo con la variabile di ambiente PHP_FCGI_CHILDREN. La direttiva "bin-environment" imposta l'ambiente per i processi generati. PHP terminerà i processi generati dopo che il numero di richieste specificato in PHP_FCGI_MAX_REQUESTS sia stato raggiunto. L'uso delle direttive "min-procs" e "max-procs" è sconsigliato relativamente a PHP. PHP gestisce autonomamente i propri processi figlio e la cache opcode come APC viene condivisa unicamente tra processi gestiti da PHP. Se "min-procs" è impostata ad un numero maggiore di 1, il numero totale di risponditori di php sarà moltiplicato per PHP_FCGI_CHILDREN (2 min-procs * 16 processi dà come risultato 32 risponditori).
Lighttpd fornisce un programma chiamato spawn-fcgi per facilitare la generazione di processi fastcgi.
E' possibile generare processi senza spawn-fcgi, ma il procedimento è più complicato. L'impostazione della variabile di ambiente PHP_FCGI_CHILDREN controlla quanti processi figlio saranno generati da PHP per gestire le richieste ricevute. L'impostazione di PHP_FCGI_MAX_REQUESTS determinerà quanto a lungo (in termini di richieste) ogni processo figlio dovrà durare. Segue un semplice script bash per generare risponditori php.
Example #2 Generazione di risponditori FastCGI
#!/bin/sh
# Location of the php-cgi binary
PHP=/usr/local/bin/php-cgi
# PID File location
PHP_PID=/tmp/php.pid
# Binding to an address
#FCGI_BIND_ADDRESS=10.0.1.1:10000
# Binding to a domain socket
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"
Le istanze di Fastcgi possono essere generate su macchine remote multiple per consentire la scalabilità delle applicazioni.
Example #3 Connessione a istanze di php-fastcgi remote
fastcgi.server = ( ".php" =>
(( "host" => "10.0.0.2", "port" => 1030 ),
( "host" => "10.0.0.3", "port" => 1030 ))
)