Ця сторінка містить замітки та підказки призначені для встановлення PHP на Unix системах з веб-сервером Lighttpd 1.4.
Щоб отримати інформацію про правильне встановлення Lighttpd, відвідайте їхній сайт » Lighttpd trac.
  Рекомендовано вибирати fastcgi SAPI для з'єднання PHP з Lighttpd. Fastcgi
  автоматично включено в php-cgi починаючи з PHP 5.3, але для старіших версій
  встановіть PHP з параметром --enable-fastcgi. Щоб перевірити, що в PHP підключено
  fastcgi, видача php -v повинна мати приблизно такий рядок
  PHP 5.2.5 (cgi-fcgi). Перед PHP 5.2.3, fastcgi було
  включено в бінарну версію php (це був не сам php-cgi).
 
Щоб сконфігурувати Lighttpd для підключення до PHP та розмножувача fastcgi-процесів, змініть файл lighttpd.conf. Краще вибирати сокети для fastcgi-процесів.
Приклад #1 Частина файла 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
  ))
)
Директива "bin-path" містить шлях до виконуючого файла php, та дозволяє lighttpd динамічно розмножувати fastcgi-процеси. PHP буде породжувати дочірні процеси відповідно до змінної оточення PHP_FCGI_CHILDREN. Директива "bin-environment" встановлює оточення для розмноження процесів. PHP буде вбивати дочірні процеси, коли число запитів досягне значення, яке визначено через PHP_FCGI_MAX_REQUESTS. Директиви "min-procs" та "max-procs" зазвичай варто уникати. PHP управляє її власними дочірніми процесами, а такий opcode-кеш як APC буде поширюватись тільки серед дочірніх процесів, що управляються через PHP. Якщо для "min-procs" встановлено значення більше 1, загальне число процесів, що обробляють запити (число обробників), буде помноженим на PHP_FCGI_CHILDREN (Тобто: 2 min-procs * 16 дочірніх процесів = 32 обробників).
Lighttpd надає програму spawn-fcgi, щоб спростити процес породження fastcgi-процесів.
Є можливість породжувати процеси без spawn-fcgi, хоча це вимагає деяких допрацювань. Через параметр оточення PHP_FCGI_CHILDREN визначається, як за багато дочірніх процесів PHP буде породжено для обробки вхідних запитів. Через параметр PHP_FCGI_MAX_REQUESTS визначається, як за довго (в запитах) кожен дочірній процес буде жити. Нижче наведено простий bash-скрипт, що полегшує створення php-обробників.
Приклад #2 Породження FastCGI-обробників
#!/bin/sh
# Розташування бінарного файла php-cgi
PHP=/usr/local/bin/php-cgi
# Розташування PID-файла
PHP_PID=/tmp/php.pid
# Прив'язка до адреси
# FCGI_BIND_ADDRESS=10.0.1.1:10000
# Прив'язка до сокету домена
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"
Fastcgi екземпляри можуть бути породженими на декількох віддалених машинах, для можливості масштабувати застосунки.
Приклад #3 Підключення до віддалених php-fastcgi екземплярів
fastcgi.server = ( ".php" =>
   (( "host" => "10.0.0.2", "port" => 1030 ),
    ( "host" => "10.0.0.3", "port" => 1030 ))
)
