воскресенье, 9 ноября 2008 г.

Linux. Ставим Lighttpd и PHP

Итак! Решил я поставить Веб-сервер и PHP.
До этого ставил как-то - при установке поставил Апач, ну и потом доставил РНР. Тогда как и сейчас стояла Мандрива. Как ставить РНР - не знал. В менеджере больно много пакетов и какой ставить не понятно. Нашел где-то команду, ввел, все установилось.

С тех пор систему снес, поставил новую (Мандриву 2008.0). Но без обоих серверов.
Когда стал выбирать сервер, решил поставить новый. Как подсказал один человек - "все равно тебе все возможности Апача не нужны, поставь что попроще". Решил Lighttpd. Поставил, но возникла проблема - а как подружить его с РНР?
На самом деле все очень просто, хотя у меня и ушло часа 2 на это.

Начнем с установки Lighttpd - она проста. Достаточно найти в менеджере пакетов и нажать установить. Через "urpmi lighttpd" из-под рута думаю должно получиться, хотя не пробовал.

HTML-файлы по-умолчанию хранятся в /var/www/html
После установки можно создать там index.html, заполнить чем-то простым, ну и собственно проверить на работоспособность, открыв http://127.0.0.1

Работает - ура. Не работает - попробуйте перезапустить сервис командой:
service lighttpd restart

Команда, которую быть может придется часто использовать для проверки работоспособности.
Короче говоря тут уж проблем возникнуть не должно.

Теперь надо поставить PHP.
Что выбирать из списка - не знаю. Может можно собрать из исходников, или найти пакет на каком сайте.
Я в Мандриве 2008 ввел команду:
urpmi php
После чего последовала несколько простых вопросов вроде "а установить ли", и "вы уверены в подписях" и процесс пошел.

Важный момент тут такой - при установке система спросит:

*****
Для удовлетворения зависимости 'php-fcgi|php-cli|apache-mod_php|php-cgi|apache-mod_php|php-fcgi|php-cgi|php-cli|php-cli' нужен один из следующих пакетов:
1- apache-mod_php-5.2.4-2mdv2008.0.i586: The PHP5 HTML-embedded scripting language for use with apache (для установки)
2- php-fcgi-5.2.4-3.2mdv2008.0.i586: PHP5 CGI interface with FastCGI support (для установки)
3- php-cli-5.2.4-3.2mdv2008.0.i586: PHP5 CLI interface (для установки)
4- php-cgi-5.2.4-3.2mdv2008.0.i586: PHP5 CGI interface (для установки)
Ваш выбор? (1-4)
*****

Выбирать надо 2 пункт, т.е. "PHP5 CGI interface with FastCGI support".
Но! На всякий случай, я сам не знаю зачем, после установки, я запустил установку PHP еще раз и выбрал "PHP5 CGI interface". Т.е. установил и то и это. Может этот шаг лишний - не знаю.

Наконец, когда вы все поставили и у вас даже работает сайт и вероятно есть РНР надо все это настроить.
Для определения наличия РНР - выполните команду "php -v" - должна написать версию; у меня не пишет правда =\

Первое.
Найти в файле "/etc/php.ini" строку cgi.fix_pathinfo, убрать комментарий (# или ;) и присвоить единицу:
cgi.fix_pathinfo = 1

Второе.
Открываем файл "/etc/lighttpd/lighttpd.conf", и убираем комментарий напротив строки (запятую не трогать):
"mod_fastcgi",

Третье.
В том же файле "lighttpd.conf" находим ниженаписанные закомментированные строки, убираем комментарии и меняем параметры на те, что у вас на самом деле:
fastcgi.server = ( ".php" => ((
"bin-path" => "usr/bin/php-fcgi",
"socket" => "/tmp/php.socket"
)))

То есть - тут надо вписать два файла: "php-fcgi" и "php.socket".
Узнать, где они находятся в вашей ОС - можно используя поиск. У меня там, где написано выше.

И, наконец, тут есть еще один интересный нюанс. В мануалах пишут надо добавить строку:
"bin-path" => "usr/bin/php-cgi"
Отличие это строки от моей в том, что это другой файл (не "php-fcgi"), хотя и лежит рядом. И с ним (php-cgi) при этом ничего не работает!
В крайнем случае попробуйте ввести оба по очереди =)

Да, ну и еще можно ввести дополнительные параметры. О том, что они значат - читайте в инете, выглядеть это будет так:

fastcgi.server = ( ".php" =>
((
"socket" => "/tmp/php.socket",
"bin-path" => "usr/bin/php-fcgi",
"bin-environment" => (
"PHP_FCGI_CHILDREN" => "16",
"PHP_FCGI_MAX_REQUESTS" => "10000"
),
"min-procs" => 1,
"max-procs" => 1,
"idle-timeout" => 20
))
)

Наконец, осталось создать любой тестовый РНР-файл и перезапустить веб-сервер.
Как перезапустить сервер я уже писал выше, а файл можно создать взамен "index.html" (банально удалив его), и назвать его "index.php".

Перезапускаем сервер и заходим к себе http://127.0.0.1/
Система должна подхватить index.php и выполнить его =)

Если вам помогла эта статья - оставьте комментарий! Они доступны даже не зарегистрированным пользователям.

За моральную поддержку спасибо GrayCat.

1 комментарий:

Pavel Odintsov комментирует...

Вообще, так будут воркать далеко не все PHP скрпиты, как и под php-cgi :(

Так что пока самое лучшее решение для пхп таки Апача.