Установка PHP на Lighttpd 1.4 на Unix системах
Этот раздел содержит информацию по установке PHP на Unix-системы с сервером Lighttpd 1.4.
Прочитайте, пожалуйста, инструкции по установке Lighttpd в » документации по Lighttpd перед установкой PHP.
Fastcgi - предпочитаемый интерфейс для связи PHP и Lighttpd. Fastcgi доступен по умолчанию в PHP начиная с версии 5.3. Для предыдущих версий необходимо конфигурировать PHP с флагом --enable-fastcgi. Чтобы убедиться, что PHP скомпилирован с поддержкой fastcgi, необходимо проверить наличие (cgi-fcgi) в выводе команды php -v. Для версии 5.2.5 это будет выглядеть так: PHP 5.2.5 (cgi-fcgi). До версии 5.2.3 не существовало отдельного файла php-cgi, fastcgi встраивался в основной бинарный файл php.
Управление процессами php через Lighttpd
Для настройки Lighttpd на соединение с PHP и порождения процессов fastcgi необходимо отредактировать конфигурационный файл lighttpd.conf. Предпочтительнее подключаться к процессам fastcgi используя unix-сокеты.
Пример #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 будет динамически создавать дочерние процессы php, согласно переменной окружения PHP_FCGI_CHILDREN. Директива bin-environment задает настройки для дочерних процессов. PHP_FCGI_MAX_REQUESTS определяет порог, при достижении которого PHP завершит дочерний процесс. Директив "min-procs" и "max-procs" обычно стоит избегать. PHP управляет только своими дочерними процессами, и инструменты кэширования в байткод (например, APC) будут использоваться только в этих дочерних процессах. Если значение "min-procs" установлено больше 1, общее количество процессов, обрабатывающих запросы, будет равно PHP_FCGI_CHILDREN * min-procs.
Управление процессами с помощью spawn-fcgi
Lighttpd предоставляет программу spawn-fcgi для облегчения управления дочерними процессами.
Управление процессами с помощью php-cgi
Управлять процессами можно и без spawn-fcgi, но это потребует некоторых доработок. Переменная окружения PHP_FCGI_CHILDREN указывает количество дочерних процессов, запускаемых PHP для обработки входящих запросов. Переменная PHP_FCGI_MAX_REQUESTS отвечает за количество запросов, которые обработает один процесс. Ниже приведен простой bash-скрипт, облегчающий создание дочерних процессов.
Пример #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"
Подключение к удаленным процессам FCGI
Обработчики fastcgi могут находиться на нескольких отдельных машинах для масштабирования нагрузки.
Пример #3 Подключение к удаленным процессам fastcgi
fastcgi.server = ( ".php" => (( "host" => "10.0.0.2", "port" => 1030 ), ( "host" => "10.0.0.3", "port" => 1030 )) )
- Apache 1.3.x на системах Unix
- Apache 2.x на Unix системах
- Nginx 1.4.x on Unix systems
- Установка PHP на Lighttpd 1.4 на Unix системах
- Sun, iPlanet and Netscape servers on Sun Solaris
- Установка с интерфейсами CGI и командной строки
- Инструкции по установке для ОС HP-UX
- OpenBSD installation notes
- Инструкции по инсталляции для ОС Solaris
- Debian GNU/Linux installation notes
Коментарии
<-- Start -->
#!/bin/bash
/usr/bin/spawn-fcgi \
-s /var/run/lighttpd/php-fastcgi-kr.php.net.socket \
-f "/usr/bin/php-cgi -c /etc/php-kr.php.net.ini" \
-u lighttpd \
-g lighttpd \
-C 4 \
-P /var/run/spawn-fcgi-kr.php.net.pid \
-F 12
<-- End -->
lighttpd 1.5 - Config
<-- Start -->
$HTTP["host"] =~ "^(www.)?kr.php.net" {
server.document-root = "/home/kr.php.net"
accesslog.filename = "/var/log/lighttpd/kr.php.net-access_log"
index-file.names = ( "index.php", "index.html", "index.htm" )
url.access-deny = ( "~", ".inc", ".htaccess" )
server.error-handler-404 = "/error.php"
alias.url = (
"/FAQ.php" => "/home/kr.php.net/manual/kr/faq.php",
"/stats" => "/home/kr.php.net-stats"
)
setenv.add-environment = (
"MIRROR_LANGUAGE" => "kr",
"MIRROR_STATS" => "1"
)
$HTTP["url"] =~ "\.php$" {
proxy-core.balancer = "round-robin"
proxy-core.allow-x-sendfile = "enable"
proxy-core.protocol = "fastcgi"
proxy-core.backends = ( "unix:/var/run/lighttpd/php-fastcgi-kr.php.net.socket" )
proxy-core.max-pool-size = 16
}
}
<-- End -->
If PHP_FCGI_MAX_REQUESTS isn't given, the default value is 500.
You can custom php.ini just add environment PHPRC in your virtualhost.
fastcgi.server = ( ".php" => ((
"bin-path" => "/usr/bin/php-cgi",
"socket" => "/tmp/php.socket",
"bin-environment" => (
"PHP_FCGI_CHILDREN" => "3",
"PHP_FCGI_MAX_REQUESTS" => "1000",
"PHPRC" => "/usr/www/vhost1/php.ini"
),
"bin-copy-environment" => (
"PATH", "SHELL", "USER"
),
"broken-scriptfilename" => "enable"
)))