Лайти (Lighttpd)
Написано по мотивам , в отличии от которой все здесь описанное реально работает. Читая этот блог (по основному адресу) Вы можете в этом убедиться лично.
Ставится это все на VDS под управлением , заказать такой можно у , или , используется дисковый шаблон «ОС FreeBSD 6.x и самое современное ПО», именуемый в VDSmanager как Soft2006.
В качестве web-сервера был выбран (да-да, именно так это произносится). Почему не nginx? От него я отказался после того как стал устанавливать себе rTorrent и мне вдруг понадобился SCGI, которого у nginx не оказалось, кроме того хотелось отказаться от второго (пусть и маленького) http-сервера , используемого для запуска скрипта на perl, т.к. CGI у nginx тоже нет. Собственно лирика закончена, переходим к установке.
Лайти ставим из портов
# cd /usr/ports/www/lighttpd
# make install clean
в опциях нужно убрать IPv6, на VDS его все равно нет, остальное по желанию, я себе включил SSL, BZIP2, MEMCACHE и WebDAV.
Для установки php-fpm берем фрибсдшный порт для версии php-5.2.6 . В отличии от способа описанного моим коллегой , при сборке этого порта rc-скрипт складывается в нужное место (/usr/local/etc/rc.d) и отсутствует описанный мной глюк. Устанавливаем
# tar -xvf php5_fpm_526.tar.gz -C /usr/ports/lang/
# cd /usr/ports/lang/php5-fpm
# make
На этом этапе у нас есть два пути:
- Воспользоваться моего коллеги и не перезаписывать темплейтные файлы, а просто скопировать бинарник, стартовый скрипт и конфиг на свои места
- Установить поверх шаблона, сказав make install
Я выбрал второе, т.к. php у меня уже давно не из шаблона :) .
Предположим что нам нужно хостить двух юзеров (user1 и user2) с их сайтами, которым необходим php. Для начала создадим всех необходимых пользователей и сайты через панель управления ISPmanager. Зачем? Да очень просто, чтобы в случае чего можно было вернуть все как было отказавшись от lighttpd+php-fpm.
Выполняем настройку php-fpm
# cd /usr/local/etc
# cp php-fpm.conf.dist php-fpm.conf
# vi php-fpm.conf
Нужно создать два пула обработчиков — по одному для каждого юзера, вглядеть это будет примерно так
<section name="pool">
<value name="name">user1</value>
<value name="listen_address">/home/user1/data/sockets/php.sock</value>
<value name="listen_options">
<value name="backlog">-1</value>
<value name="owner">user1</value>
<value name="group">www</value>
<value name="mode">0660</value>
</value>
<value name="php_defines">
<value name="open_basedir">/home/user1/data:.</value>
<value name="upload_tmp_dir">/home/user1/data/tmp</value>
<value name="session.save_path">/home/user1/data/tmp</value>
<value name="error_log">/home/user1/data/logs/user1.ru.error.log</value>
</value>
<value name="user">user1</value>
<value name="group">user1</value>
<value name="pm">
<value name="style">static</value>
<value name="max_children">1</value>
<value name="apache_like">
<value name="StartServers">20</value>
<value name="MinSpareServers">5</value>
<value name="MaxSpareServers">35</value>
</value>
</value>
<value name="request_execution_timeout">31s</value>
<value name="rlimit_files">1024</value>
<value name="rlimit_core">unlimited</value>
<value name="chroot"></value>
<value name="chdir"></value>
<value name="catch_workers_output">yes</value>
<value name="max_requests">500</value>
<value name="allowed_clients">localhost</value>
<value name="environment">
<value name="HOSTNAME">$HOSTNAME</value>
<value name="PATH">/usr/local/bin:/usr/bin:/bin</value>
<value name="TMP">/tmp</value>
<value name="TMPDIR">/tmp</value>
<value name="TEMP">/tmp</value>
<value name="OSTYPE">$OSTYPE</value>
<value name="MACHTYPE">$MACHTYPE</value>
<value name="MALLOC_CHECK_">2</value>
</value>
</section>
Аналогично для второго юзера. Не забываем создать каждому пользователю директорию под сокет через который будем подключаться
# mkdir /home/user1/data/sockets
# chown user1:www /home/user1/data/sockets
# chmod 770 /home/user1/data/sockets
Теперь настроим лайти
# cp lighttpd.conf.sample lighttpd.conf
# vi lighttpd.conf
Нужно описать все виртуальные хосты пользователей примерно вот так
$HTTP["host"] =~ «(^|\.) user1\.ru$» {
server.document-root = «/home/user1/data/www/user1.ru»
server.errorlog = «/home/user1/data/logs/user1.error.log»accesslog.filename = «/home/user1/data/logs/user1.ru.access.log»
# Следующая строчка нужна для работы пермалинков в Wordpress
server.error-handler-404 = «/index.php?error=404»
fastcgi.server = ( «.php» =>
(( «socket» => «/home/user1/data/sockets/php.sock»,
«bin-copy-environment» => (
«HOSTNAME», «PATH», «TMP», «TMPDIR», «TEMP», «OSTYPE», «MACHTYPE», «MALLOC_CHECK_» ),
«broken-scriptfilename» => «enable»
))
)
}
Если пользователю надо CGI — тоже не проблема
$HTTP["url"] =~ «^/cgi-bin» {
cgi.assign = ( «.pl» => "",
«.cgi» => «„)
}
Аналогично для всех остальных. Все, можно пробовать.
# apachectl stop
# /usr/local/etc/rc.d/php-fpm forcestart
# /usr/local/etc/rc.d/lighttpd forcestart
Если работает — мои поздравления и последние штрихи
# vi /etc/rc.conf
apache22_enable=“NO»
lighttpd_enable="YES"
php_fpm_enable="YES"
Если нет — проверяем что все сделано правильно или добро пожаловать и . Или если уже совсем ничего не помогает
# vi /etc/rc.conf
apache22_enable="YES"
Напоследок об оптимизаторе eAccellerator, который везде советуют. Скажу сразу, я никакие оптимизаторы не использую не те у меня нагрузки, но если opcode cacher Вам все-таки нужен берите (в потрах /usr/ports/www/xcache), его и eAccellerator я для теста включал у себя. Так вот при использовании xcache php в корки не валится, а с конкурентом очень даже. Других отличий не заметил. Вот теперь точно все.
Комментарии и конструктивная критика приветсвуются.



Комментариев нет на запись "Лайти (Lighttpd)"
Ваш комментарий может быть первым :) .
Оставить комментарий