PHP-FPM несколько пулов

Часто требуется иметь раздельные настройки PHP для разных проектов на одном сервере. При работе связки PHP-FPM + nginx это решается через настройку нескольких пулов. Вот как это выглядит на CentOS или AlmaLinux — при использовании репозиториев remi:
1) стандартный конфиг /etc/opt/remi/php83/php-fpm.d/www.conf
2) отдельный конфиг /etc/opt/remi/php83/php-fpm.d/nextcloud.conf
Внутри прописываем разные сокеты. Основные параметры настройки выглядят так:
[nextcloud]
user = nginx
group = nginx
listen = /var/run/php-fpm/php83-nextcloud-fpm.sock
listen.mode = 0660
listen.owner = nginx
listen.group = nginx
Тут /var/run
- хорошее место для размещения сокетов. Подкаталог /var/run/php-fpm
будет содержать несколько разных сокетов, которые относятся к разным версиям PHP и проектам. Такая организация размещения сокетов позволяет держать порядок в системе, не захламлять всё в одну кучу (одна крайность) или в разные каталоги (другая крайность).
Чтобы работала такая схема размещения, нужно в systemd сервисе прописать настройки для каталога хранения сокетов и его владельца и группу. Для этого переопределяем системный конфиг:
sudo mkdir -p /etc/systemd/system/php83-php-fpm.service.d
sudo nano /etc/systemd/system/php83-php-fpm.service.d/override.conf
Вписываем:
[Service]
RuntimeDirectory=php-fpm
RuntimeDirectoryMode=0750
RuntimeDirectoryPreserve=restart
User=nginx
Group=nginx
Перезапускаем:
sudo systemctl daemon-reload
sudo systemctl restart php83-php-fpm.service
Всё, можно прописывать сокет в настройке хоста nginx:
location ~ \.php$ {
fastcgi_pass unix:/var/run/php-fpm/php83-nextcloud-fpm.sock;
include fastcgi_params;
...
}
Так nginx и PHP-FPM будут иметь доступ к сокету. Перезапуск сервиса будет происходить корректно даже после перезагрузки компьютера. Если не создавать переопределения настроек systemd сервиса, то при таком пути к сокету была бы ошибка:
ERROR: unable to bind listening socket for address '/var/run/php-fpm/php83-nextcloud-fpm.sock': No such file or directory
Пришлось бы вручную создавать каталог /var/run/php-fpm
— и после этого стартовать сервис PHP-FPM. А параметры User и Group в настройках systemd сервиса нужны, чтобы этот каталог не создавался бы под root:root
— так была бы в логах ошибка вида:
2025/06/14 20:36:01 [crit] 7732#7732: *4 connect() to unix:/var/run/php-fpm/php83-nextcloud-fpm.sock failed (13: Permission denied) while connecting to upstream, client: 72.240.19.58, server: nextcloud.example.com, request: "GET /index.php /204 HTTP/1.1", upstream: "fastcgi://unix:/var/run/php-fpm/php83-nextcloud-fpm.sock:", host: "nextcloud.example.com"
Комментарии
Отправить комментарий