Ця сторінка містить замітки та підказки призначені для встановлення 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 )) )