Miklix

Как настроить отдельные пулы PHP-FPM в NGINX

Опубликовано: 15 февраля 2025 г. в 11:53:00 UTC

В этой статье я рассмотрю шаги по настройке, необходимые для запуска нескольких пулов PHP-FPM и подключения к ним NGINX через FastCGI, что позволит разделить процессы и изолировать виртуальные хосты.


Эта страница была переведена с английского языка для того, чтобы сделать ее доступной как можно большему числу людей. К сожалению, машинный перевод еще не является совершенной технологией, поэтому возможны ошибки. Если вы хотите, вы можете просмотреть оригинальную английскую версию здесь:

How to Set Up Separate PHP-FPM Pools in NGINX

Информация в этом посте основана на NGINX 1.4.6 и PHP-FPM 5.5.9, работающих на Ubuntu Server 14.04 x64. Она может быть верна или нет для других версий. (Обновление: я могу подтвердить, что в Ubuntu Server 24.04, PHP-FPM 8.3 и NGINX 1.24.0 все инструкции в этом посте по-прежнему работают)

Есть ряд преимуществ в настройке нескольких пулов дочерних процессов PHP-FPM по сравнению с запуском всего в одном пуле. Безопасность, разделение/изоляция и управление ресурсами приходят на ум как несколько основных.

Независимо от того, какова ваша мотивация, этот пост поможет вам в этом :-)


Часть 1 — Настройка нового пула PHP-FPM

Сначала вам нужно найти каталог, в котором PHP-FPM хранит свои конфигурации пула. В Ubuntu 14.04 это /etc/php5/fpm/pool.d по умолчанию. Вероятно, там уже есть файл www.conf , который содержит конфигурацию для пула по умолчанию. Если вы раньше не смотрели этот файл, скорее всего, вам следует просмотреть его и настроить параметры в нем для вашей установки, поскольку значения по умолчанию предназначены для довольно слабого сервера, но пока просто сделайте его копию, чтобы нам не пришлось начинать с нуля:

sudo cp www.conf mypool.conf

Конечно, замените «mypool» на то название, которое вы хотите, чтобы назывался ваш пул.

Теперь откройте новый файл с помощью nano или любого другого текстового редактора, который вам больше нравится, и настройте его в соответствии с вашими целями. Вероятно, вам захочется изменить номера дочерних процессов и, возможно, пользователя и группу, под которыми работает пул, но две настройки, которые вам обязательно нужно изменить, — это имя пула и сокет, который он слушает, иначе он будет конфликтовать с существующим пулом, и все перестанет работать.

Имя пула находится в верхней части файла и заключено в квадратные скобки. По умолчанию это [www] . Измените его на то, что вам нужно; я предлагаю то же самое, что вы назвали файл конфигурации, поэтому ради этого примера измените его на [mypool] . Если вы не измените его, похоже, PHP-FPM загрузит только первый файл конфигурации с этим именем, что, скорее всего, все сломает.

Затем вам нужно изменить сокет или адрес, который вы слушаете, который определяется директивой listen . По умолчанию PHP-FPM использует сокеты Unix, поэтому ваша директива listen, вероятно, будет выглядеть так:

listen = /var/run/php5-fpm.sock

Вы можете изменить его на любое допустимое имя, но я снова предлагаю придерживаться чего-то похожего на имя файла конфигурации, например, можно задать следующее:

listen = /var/run/php5-fpm-mypool.sock

Хорошо, тогда сохраните файл и выйдите из текстового редактора.


Часть 2 – Обновление конфигурации виртуального хоста NGINX

Теперь вам нужно открыть файл виртуального хоста NGINX с конфигурацией FastCGI, которую вы хотите изменить на новый пул, или, скорее, подключиться к новому сокету.

По умолчанию в Ubuntu 14.04 они хранятся в /etc/nginx/sites-available, но могут быть определены и в другом месте. Вы, вероятно, лучше знаете, где находятся ваши конфигурации виртуального хоста ;-)

Откройте соответствующий файл конфигурации в вашем любимом текстовом редакторе и найдите директиву fastcgi_pass (которая должна быть в контексте местоположения), определяющую сокет PHP-FPM. Вы должны изменить это значение так, чтобы оно соответствовало новой конфигурации пула PHP-FPM, которую вы создали на первом шаге, поэтому, продолжая наш пример, вы измените это на:

fastcgi_pass unix:/var/run/php5-fpm-mypool.sock;

Затем сохраните и закройте этот файл. Вы почти закончили.


Часть 3 – Перезапуск PHP-FPM и NGINX

Чтобы применить внесенные вами изменения конфигурации, перезапустите PHP-FPM и NGINX. Может быть достаточно перезагрузить вместо перезапуска , но я нахожу это немного непредсказуемым, в зависимости от того, какие настройки были изменены. В конкретном случае я хотел, чтобы старые дочерние процессы PHP-FPM немедленно завершились, поэтому потребовался перезапуск PHP-FPM, но для NGINX перезагрузки может быть достаточно. Попробуйте сами.

sudo service php5-fpm restart
sudo service nginx restart

И вуаля, готово. Если вы все сделали правильно, измененный вами виртуальный хост теперь должен использовать новый пул PHP-FPM и не разделять дочерние процессы с другими виртуальными хостами.

Поделиться на BlueskyПоделиться на FacebookПоделиться на LinkedInПоделиться на TumblrПоделиться на XПоделиться на LinkedInЗакрепить на Pinterest

Миккель Банг Кристенсен

Об авторе

Миккель Банг Кристенсен
Миккель - создатель и владелец сайта miklix.com. Он имеет более чем 20-летний опыт работы в качестве профессионального программиста/разработчика программного обеспечения и в настоящее время работает на полную ставку в крупной европейской IT-корпорации. Когда он не ведет блог, то тратит свое свободное время на огромное количество интересов, хобби и занятий, что в некоторой степени отражается в разнообразии тем, освещаемых на этом сайте.