Miklix

Як налаштувати окремі пули PHP-FPM у NGINX

Опубліковано: 15 лютого 2025 р. о 11:53:09 UTC
Останнє оновлення: 12 січня 2026 р. о 08:30:09 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 років досвіду роботи професійним програмістом/розробником програмного забезпечення і наразі працює на повну ставку у великій європейській ІТ-корпорації. У вільний від ведення блогу час він присвячує різноманітним інтересам, хобі та захопленням, що певною мірою відображається на різноманітності тем, які висвітлюються на цьому сайті.