Nginx/php-fpm
Версия от 10:29, 30 октября 2023; Elena Mishina (обсуждение | вклад) (Elena Mishina переименовал страницу Nginx/php7-fpm в Nginx/php-fpm: php7-fpm → php8.0, php8.1, php 8.2)
Использование nginx и php8.x-fpm
Начиная с версии php8.0, пакеты модулей именуются следующим образом:
php<мажорная>.<минорная версии>-<имя модуля>
Из репозитория можно установить и эксплуатировать в одной системе одновременно разные версии php. В данной статье в качестве примера для p10 используется php8.2.
Установка
Примечание: При развёртывании в контейнере OpenVZ обратите внимание на shmpages, иначе FPM может не стартовать:
vzctl set 101 --shmpages 256M --save
Устанавливаем пакеты (добавив и акселератор), можно сразу запускать FPM:
# apt-get install nginx php8.2-{fpm-fcgi,apcu}-fpm-fcgi php8.2-apcu
# systemctl enable --now php8.2-fpm
Примечание: Установка пакетов в p9:
# apt-get install nginx php7-fpm-fcgi php7-apcu
# systemctl enable --now php7-fpm
Конфигурируем виртуальный хост — например, создаём файл /etc/nginx/sites-available.d/example.test.conf:
server {
listen *:80;
server_name example.test www.example.test;
location / {
root /srv/www/example.test;
}
location ~ \.php$ {
root /srv/www/example.test;
try_files $uri =404;
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/run/php8.2-fpm/php8.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME /srv/www/www.example.com/$fastcgi_script_name;
}
location ~ /\.ht {
deny all;
}
access_log /var/log/nginx/example.test-access.log;
}
Примечание: В p9 необходимо заменить строку:
fastcgi_pass unix:/var/run/php8.2-fpm/php8.2-fpm.sock;
на:
fastcgi_pass unix:/var/run/php7-fpm/php7-fpm.sock;
Активировать конфигурацию:
# ln -s /etc/nginx/sites-available.d/example.test.conf /etc/nginx/sites-enabled.d/
Старт
Запускаем nginx:
# systemctl enable --now nginx
Проверка
Всё, можно проверять:
# mkdir -p /srv/www/example.test
# echo '<?php phpinfo(); ?>' >> /srv/www/example.test/secr3t.php
Для проверки работы веб-сервера в веб-браузере открыть страницу http://IP-сервера или http://домен (например, http://example.test/secr3t.php). Если всё работает, не забываем убрать крайне полезный для потенциального атакующего файл:
# rm -f /srv/www/example.test/secr3t.php