Nginx + PHP-FastCGI

Установка PHP на NGINX

Сегодня рассмотрим пример настройки на рабочую конфигурацию без лишних извращенств.

Читаем далее…

Ставим пакеты

apt-get install nginx php5-cgi libpcre3-dev libbz2-dev

Если нужно по полной вставить php, то можно еще доставить:

apt-get install php5-gd php5-mysql php5-curl php5-snmp

Для пхп нам потребуется сам FastCGI из исходников пакета lighttpd

mkdir ~/src
cd ~/src
# возможно будет уже и более свежая версия
wget http://www.lighttpd.net/download/lighttpd-1.4.19.tar.bz2
tar jxvf ./lighttpd-1.4.19.tar.bz2
# необходимые пакеты для установочного скрипта
cd ./lighttpd-1.4.19
# может возникнуть ошибка Zlib, тогда выставляем
# с параметром --without-zlib
./configure --without-zlib
make
cp src/spawn-fcgi /usr/bin/spawn-fcgi
# И удалим за собой ненужныеболее файлы
cd ~/
rm -Rf src/
Одна часть готова.
Теперь научим его запускаться
touch /usr/bin/php-fastcgi
nano /usr/bin/php-fastcgi
Дальше вставляем кусок кода в файл
#!/bin/bash
#Колиество дочерних процесов
PHP_FCGI_CHILDREN=3
# через Н* количество запросов - перезапуск
PHP_FCGI_MAX_REQUESTS=1000
exec /usr/bin/php5-cgi
Теперь скрипт запуска ручного и автоматического
touch /etc/init.d/init-fastcgi
nano /etc/init.d/init-fastcgi
Далее сам код:
#!/bin/bash
PHP_SCRIPT="/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -g www-data -f /usr/bin/php-fastcgi"
RETVAL=0
case "$1" in
start)
$PHP_SCRIPT
RETVAL=$?
;;
stop)
killall -9 php5-cgi
RETVAL=$?
;;
restart)
killall -9 php5-cgi
$PHP_SCRIPT
RETVAL=$?
;;
*)
echo "Usage: sudo /etc/init.d/init-fastcgi {start|stop|restart}"
exit 1
;;
esac
exit $RETVAL
Делаем файлы исполняемыми
chmod +x /usr/bin/php-fastcgi
chmod +x /etc/init.d/init-fastcgi
Добавялем в автозапуск
update-rc.d init-fastcgi defaults
В nginx конфигурации включаем обработку php
location ~ \.php$
{
include         /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name;
fastcgi_param QUERY_STRING    $query_string;
fastcgi_pass  127.0.0.1:9000;
fastcgi_intercept_errors on;
break;
}
Ну вот и всё =)