Nginx/php-fpm
Использование 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-apc 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