Cette section contient des informations spécifiques sur l'installation de PHP avec Lighttpd 1.4 sur les systèmes Unix.
Reportez-vous à » Lighttpd pour une installation correcte de Lighttpd avant de continuer.
FastCGI est le SAPI préféré pour connecter PHP et Lighttpd. FastCGI active automatiquement php-cgi.
Pour configurer Lighttpd afin qu'il se connecte à PHP et appelle le processus FastCGI, vous devez éditez le fichier lighttpd.conf. Une connexion par sockets est la solution préférée pour les systèmes locaux.
Exemple #1 Portion du fichier 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 directive bin-path permet à lighttpd d'appeler le processus FastCGI
dynamiquement. PHP appellera les fils suivant la variable d'environnement
PHP_FCGI_CHILDREN. La directive bin-environment définit l'environnement
pour les processus appelés. PHP terminera un processus fils lorsque le
nombre de requêtes spécifié par PHP_FCGI_MAX_REQUESTS a été atteint.
Les directives min-procs et max-procs peuvent généralement être ignorées
avec PHP. PHP gère ces propres fils et caches opcode comme APC qui partage
uniquement les fils gérés par PHP. Si min-procs est défini à quelque chose
de supérieur à 1, le nombre total de réponses PHP sera multiplié par
PHP_FCGI_CHILDREN (2 min-procs * 16 fils, donne 32 réponses).
Lighttpd fournit un programme appelé spawn-fcgi afin de rendre plus facile les appels des processus FastCGI.
Il est possible d'appeler des processus sans spawn-fcgi, avec un minimum de configuration. La variable d'environnement PHP_FCGI_CHILDREN contrôle le nombre de fils que PHP appelle pour gérer les demandes. La variable d'environnement PHP_FCGI_MAX_REQUESTS détermine la durée de vie, en nombre de requêtes, de chaque fils. Voici un script bash simple qui permet d'aider les appels aux répondeurs PHP.
Exemple #2 Appel des répondeurs FastCGI
#!/bin/sh
# Localisation du binaire php-cgi
PHP=/usr/local/bin/php-cgi
# Localisation du fichier PID
PHP_PID=/tmp/php.pid
# Liaison à une adresse
#FCGI_BIND_ADDRESS=10.0.1.1:10000
# Liaison à un socket du domaine
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"
Les instances FastCGI peuvent être appelées sur plusieurs machines distantes afin de répartir les applications.
Exemple #3 Connexion à des instances distantes de php-fastcgi
fastcgi.server = ( ".php" =>
(( "host" => "10.0.0.2", "port" => 1030 ),
( "host" => "10.0.0.3", "port" => 1030 ))
)