Miklix

Како да поставите посебни PHP-FPM базени во NGINX

Објавено: 5 март 2025, во 19:54:59 UTC
Последно ажурирано: 12 јануари 2026, во 08:30:29 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Споделете на ФејсбукСподелете на LinkedInСподелете на TumblrСподелете на XСподелете на LinkedInЗакачи на Pinterest

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

За авторот

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