Nginx/php-fpm

Материал из ALT Linux Wiki


Использование nginx и php5-fpm

Введение

Помимо описанного варианта с spawn-fcgi, возможно применение в качестве стартера FastCGI-скриптов на PHP5 штатного php5-fpm — говорят, для развесистых инсталяций более гибок и удобен.

Установка

При развёртывании в контейнере OpenVZ обратите внимание на shmpages, иначе FPM может не стартовать:

vzctl set 101 --shmpages 256M --save

Устанавливаем пакеты (добавив и акселератор), можно сразу запускать FPM:

apt-get install nginx php5-cgi php5-fpm-fcgi php5-apcu
chkconfig php5-fpm on
service php5-fpm start

Обратите внимание: при проблемах с правами доступа к сокету может потребоваться их указать явно (исправлено в php5-fpm-fcgi-5.3.29.20140814-alt0.M70P.1.2).

Конфигурируем виртуальный хост — например, создаём файл /etc/nginx/sites-available.d/www.example.com.conf:

server {
        listen *:80;
        server_name example.com www.example.com;

        location / {
                root /srv/www/www.example.com;
        }

        location ~ \.php$ {
                root /srv/www/www.example.com;
                try_files $uri =404;
                include /etc/nginx/fastcgi_params;
                fastcgi_pass unix:/var/run/php5-fpm/php5-fpm.sock;
                fastcgi_param SCRIPT_FILENAME /srv/www/www.example.com/$fastcgi_script_name;
        }

        location ~ /\.ht {
                deny all;
        }

        access_log /var/log/nginx/www.example.com-access.log;
}

Делаем симлинк для подключения сделанной конфигурации:

ln -s ../sites-available.d/www.example.com.conf /etc/nginx/sites-enabled.d/

Старт

Запускаем (или reload'им уже запущенный) nginx:

chkconfig nginx on
service nginx start

Проверка

Всё, можно проверять:

mkdir -p /srv/www/www.example.com
echo '<?php phpinfo(); ?>' >> /srv/www/www.example.com/secr3t.php

И теперь идём по ссылке (разумеется, с исправленным доменом или подставленным IP): http://www.example.com/secr3t.php; если всё работает, не забываем убрать крайне полезный для потенциального атакующего файлик:

rm -f /srv/www/www.example.com/secr3t.php

Ссылки