Miklix

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

Публикувано: 15 февруари 2025 г. в 11:49:11 ч. UTC
Последна актуализация: 12 януари 2026 г. в 8:29:52 ч. 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Закачи в Пинтерест

Микел Кристенсен

За автора

Микел Кристенсен
Микел е създател и собственик на сайта miklix.com. Той има над 20 години опит като професионален компютърен програмист/разработчик на софтуер и в момента работи на пълен работен ден в голяма европейска ИТ корпорация. Когато не пише в блога, той прекарва свободното си време в широк спектър от интереси, хобита и дейности, които до известна степен могат да бъдат отразени в разнообразието от теми, обхванати в този уебсайт.