lighttpd + fcgid | Lighttpd

Поскольку апач на одном из моих серверов начал потихоньку сдавать – начинаем искать ему альтернативы.
Начнём с lighttpd – быстрый фронтенд для fcgid который мы настроили ранее. Посмотрим.

Ставим из портов. Обновляемся.

#portsnap fetch
#portsnap update

Ставим:

#cd /usr/ports/www/lighttpd
#make install

В опциях выбираем поддержку mysql и OpenSSL и spawn-fcgi (для чего последний – смотрите в следющей статье).

Далее правим конфиг lighttpd - /usr/local/etc/lighttpd/lighttpd.conf

var.log_root    = "/var/log/lighttpd"
var.server_root = "/usr/local/www/data"
var.state_dir   = "/var/run"
var.home_dir    = "/var/spool/lighttpd"
var.conf_dir    = "/usr/local/etc/lighttpd"

Директории /var/log/lighttpd /var/spool/lighttpd создаем руками и выставляем права пользователя под которым работает lighttpd (у меня это www:www).

Файлы логов также создаем руками и выставляем права.

Путь к логу ошибок – в основном конфиге:

server.errorlog = log_root + "/error.log"

Путь к конфигу в котором настраивается лог доступа:

include "conf.d/access_log.conf"

Правим путь к папке с файлами веб (если переходим с апача – указываем папку которая осталась в наследство от апача):

server.document-root = "/usr/local/www/apache22/data/"

Комментируем поддержку IPv6.

Комментируем строку сокета (иначе получим ошибку о невозможности забиндить 80 порт):

# IPv4 listening socket
#$SERVER["socket"] == "0.0.0.0:80" { }

В основном конфиге всё.
Настройки подключаемых модулей лежат в конфиге /usr/local/etc/lighttpd/modules.conf. Раскомментируем строку поддержки fastcgi:

##
## FastCGI (mod_fastcgi)
##
include "conf.d/fastcgi.conf"

Здесь всё. Далее идём править конфиг fastcgi.conf. Убираем комментарий с секции:

fastcgi.server = ( ".php" =>
                   ( "php-local" =>
                     (
                       "socket" => socket_dir + "/php-fastcgi-1.socket",
               "bin-path" => "/usr/local/bin/php-cgi",
                                      "max-procs" => 1,
                       "broken-scriptfilename" => "enable",
                     )
                   ),
                   ( "php-tcp" =>
                     (
                       "host" => "127.0.0.1",
                       "port" => 9999,
                       "check-local" => "disable",
                       "broken-scriptfilename" => "enable",
                     )
                   ),

                   ( "php-num-procs" =>
                     (
                       "socket" => socket_dir + "/php-fastcgi-2.socket",
               "bin-path" => "/usr/local/bin/php-cgi",
                                      "bin-environment" => (
                         "PHP_FCGI_CHILDREN" => "16",
                         "PHP_FCGI_MAX_REQUESTS" => "10000",
                       ),
                       "max-procs" => 5,
                       "broken-scriptfilename" => "enable",
                     )
                   ),
                )

Обращаем внимание на путь к fcgid – по дефолту он выглядит так:

"bin-path" => server_root + "/cgi-bin/php5",

Меняем путь на тот что используется у вас (обращаем внимание – встречается 2 раза). У меня это /usr/local/bin/php-cgi.

Далее пишем в /etc/rc.conf

lighttpd_enable="YES"

Кладем в корень вебдиректории файл index.php с содержимым:

<?php phpinfo(); ?>

и можем запускаться. Далее как обычно – смотрим есть ли процесс:

#ps -awx | grep lighttpd

При просмотре index.php в браузере можно увидеть вместо апача упоминание о lighttpd.