Nginx/php-fpm: различия между версиями

Материал из ALT Linux Wiki
м (Elena Mishina переименовал страницу Nginx/php5-fpm в Nginx/php7-fpm: php5→php7)
Нет описания правки
Строка 1: Строка 1:
[[Категория:Web]]
[[Категория:Web]]


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


== Введение ==
== Введение ==
Помимо описанного [[Nginx/fcgiwrap|варианта с {{pkg|spawn-fcgi}}]], возможно применение в качестве стартера FastCGI-скриптов на PHP5 штатного {{pkg|php5-fpm}} — говорят, для развесистых инсталяций более гибок и удобен.
Помимо описанного [[Nginx/fcgiwrap|варианта с {{pkg|spawn-fcgi}}]], возможно применение в качестве стартера FastCGI-скриптов на PHP7 штатного {{pkg|php7-fpm}} — говорят, для развесистых инсталяций более гибок и удобен.


== Установка ==
== Установка ==
Строка 11: Строка 11:


Устанавливаем пакеты (добавив и акселератор), можно сразу запускать FPM:
Устанавливаем пакеты (добавив и акселератор), можно сразу запускать FPM:
  apt-get install nginx php5-cgi php5-fpm-fcgi php5-apcu
  apt-get install nginx php7-fpm-fcgi php7-apcu
  chkconfig php5-fpm on
  chkconfig php7-fpm on
  service php5-fpm start
  service php7-fpm start


Обратите внимание: при проблемах с правами доступа к сокету может потребоваться их [http://lists.altlinux.org/pipermail/sysadmins/2014-September/036957.html указать явно] (исправлено в {{pkg|php5-fpm-fcgi-5.3.29.20140814-alt0.M70P.1.2}}).


Конфигурируем виртуальный хост — например, создаём файл {{path|/etc/nginx/sites-available.d/www.example.com.conf}}:
Конфигурируем виртуальный хост — например, создаём файл {{path|/etc/nginx/sites-available.d/www.example.com.conf}}:
Строка 31: Строка 30:
                 try_files $uri =404;
                 try_files $uri =404;
                 include /etc/nginx/fastcgi_params;
                 include /etc/nginx/fastcgi_params;
                 fastcgi_pass unix:/var/run/php5-fpm/php5-fpm.sock;
                 fastcgi_pass unix:/var/run/php7-fpm/php7-fpm.sock;
                 fastcgi_param SCRIPT_FILENAME /srv/www/www.example.com/$fastcgi_script_name;
                 fastcgi_param SCRIPT_FILENAME /srv/www/www.example.com/$fastcgi_script_name;
         }
         }
Строка 60: Строка 59:
== Ссылки ==
== Ссылки ==
* [[Nginx/fcgiwrap]]
* [[Nginx/fcgiwrap]]
* http://www.discusswire.com/setting-php-fastcgi-nginx-dont-trust-tutorials-check-configuration/

Версия от 13:38, 24 марта 2021


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

Введение

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

Установка

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

vzctl set 101 --shmpages 256M --save

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

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


Конфигурируем виртуальный хост — например, создаём файл /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/php7-fpm/php7-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

Ссылки