Miklix

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.


Šī lapa tika mašīntulkota no angļu valodas, lai padarītu to pieejamu pēc iespējas vairāk cilvēkiem. Diemžēl mašīntulkošana vēl nav pilnīga tehnoloģija, tāpēc tajā var rasties kļūdas. Ja vēlaties, oriģinālo versiju angļu valodā varat apskatīt šeit:

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:

sudo cp www.conf mypool.conf

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:

listen = /var/run/php5-fpm.sock

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:

listen = /var/run/php5-fpm-mypool.sock

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 php5-fpm restart
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.

Kopīgojiet pakalpojumā BlueskyKopīgot FacebookKopīgojiet vietnē LinkedInKopīgojiet vietnē TumblrKopīgot vietnē XKopīgojiet vietnē LinkedInPiespraust vietnē Pinterest

Mikkel Christensen

Par autoru

Mikkel Christensen
Mikels ir miklix.com radītājs un īpašnieks. Viņam ir vairāk nekā 20 gadu pieredze kā profesionālam programmētājam/programmatūras izstrādātājam, un pašlaik viņš strādā pilna laika darbu lielā Eiropas IT korporācijā. Kad viņš neraksta blogus, viņš pavada brīvo laiku, pievēršoties dažādām interesēm, hobijiem un aktivitātēm, kas zināmā mērā var atspoguļoties šajā tīmekļa vietnē aplūkoto tēmu daudzveidībā.