Miklix

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

Објавено: 5 март 2025, во 19:54:59 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“ со како што сакате да се вика вашиот базен.

Сега отворете ја новата датотека користејќи нано или кој било уредувач на текст што го сакате и прилагодете го за да одговара на вашата цел. Веројатно ќе сакате да ги прилагодите броевите за обработка на детето и евентуално под кој корисник и група работи базенот, но двете поставки кои апсолутно мора да ги промените се името на базенот и штекерот што го слуша, во спротивно ќе дојде во конфликт со постоечкиот базен и работите ќе престанат да работат.

Името на базенот е блиску до врвот на датотеката, затворено во квадратни загради. Стандардно тоа е [www] . Променете го ова на што сакате; Го предлагам истото како што ја нарековте датотеката за конфигурација, па заради овој пример сменете ја во [mypool] . Ако не го промените, се чини дека PHP-FPM ќе ја вчита само првата конфигурациска датотека со тоа име, што веројатно ќе ги разбие работите.

Потоа треба да го промените приклучокот или адресата што ја слушате, што е дефинирано со директивата за слушање . Стандардно, PHP-FPM користи Unix сокети, така што вашата директива за слушање веројатно ќе изгледа вака:

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

И Voila, ќе завршиш. Ако сте направиле сè правилно, виртуелниот хост што го изменивте сега треба да го користи новиот базен PHP-FPM и да не споделува детски процеси со други виртуелни хостови.

Споделете на BlueskyСподелете на ФејсбукСподелете на LinkedInСподелете на TumblrСподелете на XСподелете на LinkedInЗакачи на Pinterest

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

За авторот

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