MyTetra Share
Делитесь знаниями!
Nginx+php (FastCGI) под Ubuntu
Время создания: 02.12.2009 13:33
Раздел: Компьютер - Linux - Сеть в Linux - nginx
Запись: xintrea/mytetra_syncro/master/base/0000001329/text.html на raw.github.com

Казалось бы – что может быть тривиальнее – поставить nginx с поддержкой php. Но оказывается что все не так просто: большая часть информации уже устарела или просто не работает, потому я решил обьеденить всю собранную информацию. (Использовался Ubuntu 8.04.2 LTS Hardy Heron)

Ставим инструментарий для сборки

apt-get install php5-cli build-essential

Нюанс: я не знаю какой логикой руководствовались мейнтейнеры убунту, но факт в том что пакет php5 зависит от libapache2-mod-php5, который в свою очередь тянет за собой весь апач, потому нам нужен именно php5-cgi.

Устанавливаем spawn-fcgi из состава lighttpd

wget http://www.lighttpd.net/download/lighttpd-1.4.21.tar.gz

tar -xvvf lighttpd-1.4.21.tar.gz

./configure && make

Далее из-под рута копируем куда надо бинарники spawn-fcgi:

cp src/spawn-fcgi /usr/local/bin/spawn-fcgi

cp doc/spawn-php.sh /etc/init.d/spawn-php

chmod +x /etc/init.d/spawn-php

Да, есть более удобный метод, описаный тут (http://blog.kovyrin.net/2006/05/30/nginx-php-fastcgi-howto/). (Запуск встроенного в PHP сервера FastCGI – метод, не требующий никаких дополнительных утилит.) Но у меня он банально не заработал:

2009/02/27 23:24:27 [error] 14755#0: *19 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 192.168.0.102, server: home-test, URL: “/var/www/files/index.php”, upstream: “fastcgi://127.0.0.1:8888″, host: “home-test”

Исправляем настройки spawn-php

Обязательно:

SPAWNFCGI=”/usr/local/bin/spawn-fcgi”

FCGIPROGRAM=”/usr/lib/cgi-bin/php5″

Желательно:

USERID=www-data

GROUPID=www-data

FCGIPORT=”9999″

Остальное.

Настраиваем nginx

Для настройки nginx достаточно убрать комментарии с строк в файле /etc/nginx/sites-enabled/default , и получить:

location ~ \.php$ {

fastcgi_pass 127.0.0.1:9999;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;

}

includefastcgi_params я удалил, т.к. nginx не запускался с таким параметром.

За(пере)запускаем nginx и spawn-fcgi

/etc/init.d/spawn-php

/etc/init.d/nginx restart

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

<?php

phpinfo();

?>

Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования