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