Kā iestatīt atsevišķus PHP-FPM baseinus NGINX
Publicēts: 2025. gada 15. februāris 11:52:44 UTC
Pēdējo reizi atjaunināts: 2026. gada 12. janvāris 08:30:01 UTC
Šajā rakstā es apskatīšu konfigurācijas darbības, kas nepieciešamas, lai palaistu vairākus PHP-FPM pūlus un savienotu tos ar NGINX, izmantojot FastCGI, nodrošinot procesu atdalīšanu un izolāciju starp virtuālajiem resursdatoriem.
How to Set Up Separate PHP-FPM Pools in NGINX
Šajā ierakstā sniegtā informācija ir balstīta uz NGINX 1.4.6 un PHP-FPM 5.5.9, kas darbojas Ubuntu Server 14.04 x64 vidē. Tā var būt vai nebūt derīga citām versijām. (Atjauninājums: varu apstiprināt, ka, sākot ar Ubuntu Server 24.04, PHP-FPM 8.3 un NGINX 1.24.0, visas šajā ierakstā sniegtās instrukcijas joprojām darbojas.)
Vairāku PHP-FPM bērnu procesu kopu iestatīšanai ir vairākas priekšrocības, nevis visu darbināšana vienā kopā. Kā dažas no galvenajām priekšrocībām nāk prātā drošība, atdalīšana/izolācija un resursu pārvaldība.
Neatkarīgi no jūsu motivācijas, šis ieraksts jums palīdzēs to izdarīt :-)
1. daļa — jauna PHP-FPM kopas iestatīšana
Vispirms jāatrod direktorijs, kurā PHP-FPM glabā savas pūla konfigurācijas. Ubuntu 14.04 versijā tas pēc noklusējuma ir /etc/php5/fpm/pool.d. Iespējams, tur jau ir fails ar nosaukumu www.conf, kurā ir noklusējuma pūla konfigurācija. Ja vēl neesat apskatījis šo failu, iespējams, jums tas jāizlasa un jāpielāgo iestatījumi jūsu iestatījumam, jo noklusējuma iestatījumi ir paredzēti diezgan vāji jaudīgam serverim, taču pagaidām vienkārši izveidojiet tā kopiju, lai mums nebūtu jāsāk no jauna:
Protams, nomainiet “mypool” ar to, kā vēlaties, lai tiktu nosaukts jūsu baseins.
Tagad atveriet jauno failu, izmantojot nano vai jebkuru citu jums vēlamo teksta redaktoru, un pielāgojiet to savām vajadzībām. Iespējams, vēlēsities pielāgot bērnu procesu numurus un, iespējams, lietotāju un grupu, zem kuras darbojas pūls, taču divi iestatījumi, kas jums noteikti jāmaina, ir pūla nosaukums un ligzda, kuru tas klausās, pretējā gadījumā tas konfliktēs ar esošo pūlu un viss pārstās darboties.
Kopas nosaukums atrodas faila augšdaļā, kvadrātiekavās. Pēc noklusējuma tas ir [www]. Mainiet to uz jebkuru vēlamo nosaukumu; iesaku izmantot to pašu nosaukumu, ko nosaucāt konfigurācijas failam, tāpēc šajā piemērā nomainiet to uz [mypool]. Ja to nemainīsiet, šķiet, ka PHP-FPM ielādēs tikai pirmo konfigurācijas failu ar šo nosaukumu, kas, visticamāk, var sabojāt sistēmu.
Pēc tam jāmaina klausāmā ligzda vai adrese, ko definē klausīšanās direktīva. Pēc noklusējuma PHP-FPM izmanto Unix ligzdas, tāpēc jūsu klausīšanās direktīva, iespējams, izskatīsies šādi:
Varat to mainīt uz jebkuru derīgu nosaukumu, taču atkal iesaku pieturēties pie kaut kā līdzīga konfigurācijas faila nosaukumam, piemēram, iestatot to uz:
Labi, tad saglabājiet failu un izejiet no teksta redaktora.
2. daļa. NGINX virtuālā resursdatora konfigurācijas atjaunināšana
Tagad jums ir jāatver NGINX virtuālā resursdatora fails ar FastCGI konfigurāciju, kuru vēlaties mainīt uz jaunu pūlu – vai drīzāk, izveidot savienojumu ar jauno ligzdu.
Pēc noklusējuma Ubuntu 14.04 versijā tie tiek glabāti mapē /etc/nginx/sites-available, bet tos var definēt arī citur. Jums droši vien vislabāk ir zināt, kur atrodas jūsu virtuālā resursdatora konfigurācijas ;-)
Atveriet atbilstošo konfigurācijas failu savā iecienītākajā teksta redaktorā un meklējiet fastcgi_pass direktīvu (kurai jābūt atrašanās vietas kontekstā), kas definē PHP-FPM ligzdu. Jums ir jāmaina šī vērtība, lai tā atbilstu jaunajai PHP-FPM pūla konfigurācijai, ko izveidojāt pirmajā darbībā, tāpēc, turpinot mūsu piemēru, jūs to mainītu uz:
Fastcgi_pass unix:/var/run/php5-fpm-mypool.sock;
Pēc tam saglabājiet un aizveriet arī šo failu. Tagad esat gandrīz pabeidzis.
3. daļa. Restartējiet PHP-FPM un NGINX
Lai lietotu veiktās konfigurācijas izmaiņas, restartējiet gan PHP-FPM, gan NGINX. Varbūt pietiks ar atkārtotu ielādi, nevis restartēšanu, bet man tas šķiet nedaudz neprecīzi atkarībā no mainītajiem iestatījumiem. Konkrētajā gadījumā es gribēju, lai vecie PHP-FPM bērnu procesi nekavējoties pārtrauktu darbību, tāpēc bija nepieciešama PHP-FPM restartēšana, bet NGINX gadījumā var pietikt ar atkārtotu ielādi. Izmēģiniet paši.
sudo service nginx restart
Un voila, esat pabeidzis. Ja visu izdarījāt pareizi, modificētajam virtuālajam resursdatoram tagad vajadzētu izmantot jauno PHP-FPM pūlu un tam nevajadzētu koplietot bērnu procesus ar citiem virtuālajiem resursdatoriem.
