Kaip nustatyti atskirus PHP-FPM telkinius NGINX
Paskelbta: 2025 m. vasario 15 d. 11:52:43 UTC
Paskutinį kartą atnaujinta: 2026 m. sausio 12 d. 08:30:01 UTC
Šiame straipsnyje apžvelgsiu konfigūravimo veiksmus, reikalingus norint paleisti kelis PHP-FPM telkinius ir prijungti prie jų NGINX per FastCGI, kad būtų galima atskirti ir izoliuoti procesus tarp virtualių mazgų.
How to Set Up Separate PHP-FPM Pools in NGINX
Šiame įraše pateikta informacija pagrįsta NGINX 1.4.6 ir PHP-FPM 5.5.9 versijomis, veikiančiomis „Ubuntu Server 14.04 x64“ aplinkoje. Ji gali tikti arba netikti kitoms versijoms. (Atnaujinimas: galiu patvirtinti, kad nuo „Ubuntu Server 24.04“, PHP-FPM 8.3 ir NGINX 1.24.0 versijos visos šiame įraše pateiktos instrukcijos vis dar veikia)
Yra daug privalumų sukurti kelis PHP-FPM antrinių procesų telkinius, nei paleisti viską viename telkinyje. Kaip svarbiausi iš jų, į galvą ateina saugumas, atskyrimas/izoliacija ir išteklių valdymas.
Nesvarbu, kokia jūsų motyvacija, šis įrašas padės jums tai padaryti :-)
1 dalis – Sukurkite naują PHP-FPM telkinį
Pirmiausia reikia rasti katalogą, kuriame PHP-FPM saugo savo telkinio konfigūracijas. „Ubuntu 14.04“ sistemoje tai pagal numatytuosius nustatymus yra /etc/php5/fpm/pool.d. Tikriausiai ten jau yra failas pavadinimu www.conf, kuriame saugoma numatytojo telkinio konfigūracija. Jei anksčiau neperžiūrėjote šio failo, tikriausiai turėtumėte jį peržiūrėti ir pakoreguoti nustatymus pagal savo konfigūraciją, nes numatytieji nustatymai skirti gana silpnam serveriui, bet kol kas tiesiog padarykite jo kopiją, kad nereikėtų pradėti nuo nulio:
Žinoma, „mypool“ pakeiskite tuo, kaip norite, kad vadintųsi jūsų baseinas.
Dabar atidarykite naują failą naudodami „nano“ arba bet kurį kitą jums patinkantį teksto redaktorių ir pakoreguokite jį pagal savo poreikius. Tikriausiai norėsite pakoreguoti antrinių procesų numerius ir galbūt tai, kuriam vartotojui ir grupei priklauso telkinys, tačiau du nustatymai, kuriuos būtinai turite pakeisti, yra telkinio pavadinimas ir lizdas, kurio jis klausosi, kitaip jis konfliktuos su esamu telkiniu ir viskas nustos veikti.
Telkinų grupės pavadinimas yra failo viršuje, laužtiniuose skliaustuose. Pagal numatytuosius nustatymus tai yra [www]. Pakeiskite jį į bet ką; siūlau naudoti tą patį pavadinimą, kaip ir konfigūracijos failą, todėl šiame pavyzdyje pakeiskite jį į [mypool]. Jei jo nepakeisite, atrodo, kad PHP-FPM įkels tik pirmąjį konfigūracijos failą su tuo pavadinimu, o tai greičiausiai sugadins sistemą.
Tada reikia pakeisti klausomą lizdą arba adresą, kuris apibrėžiamas klausymosi direktyvoje. Pagal numatytuosius nustatymus PHP-FPM naudoja „Unix“ lizdus, todėl jūsų klausymosi direktyva tikriausiai atrodys taip:
Galite jį pakeisti bet kokiu norimu galiojančiu pavadinimu, bet vėlgi siūlau laikytis kažko panašaus į konfigūracijos failo pavadinimą, pavyzdžiui, galite jį nustatyti taip:
Gerai, išsaugokite failą ir uždarykite teksto redaktorių.
2 dalis. Atnaujinkite NGINX virtualiojo serverio konfigūraciją
Dabar reikia atidaryti NGINX virtualiojo serverio failą su „FastCGI“ konfigūracija, kurią norite pakeisti į naują telkinį – arba, tiksliau, prisijungti prie naujo lizdo.
Pagal numatytuosius nustatymus „Ubuntu 14.04“ sistemoje jie saugomi aplanke /etc/nginx/sites-available, bet gali būti apibrėžti ir kitur. Tikriausiai geriausiai žinote, kur yra jūsų virtualiojo serverio konfigūracijos ;-)
Atidarykite atitinkamą konfigūracijos failą mėgstamame teksto redaktoriuje ir ieškokite „fastcgi_pass“ direktyvos (kuri turi būti vietos kontekste), apibrėžiančios PHP-FPM lizdą. Šią reikšmę turite pakeisti taip, kad ji atitiktų naują PHP-FPM telkinio konfigūraciją, kurią atlikote pirmame žingsnyje, taigi, tęsdami mūsų pavyzdį, pakeistumėte ją į:
Fastcgi_pass unix:/var/run/php5-fpm-mypool.sock;
Tada išsaugokite ir uždarykite tą failą. Beveik baigėte.
3 dalis. Paleiskite PHP-FPM ir NGINX iš naujo
Norėdami pritaikyti atliktus konfigūracijos pakeitimus, paleiskite PHP-FPM ir NGINX iš naujo. Gali pakakti perkrovimo, o ne paleidimo iš naujo, bet manau, kad tai šiek tiek netikslu, priklausomai nuo pakeistų nustatymų. Konkrečiu atveju norėjau, kad seni PHP-FPM antriniai procesai iš karto mirtų, todėl reikėjo paleisti PHP-FPM iš naujo, bet NGINX atveju gali pakakti perkrovimo. Išbandykite patys.
sudo service nginx restart
Ir štai, baigėte. Jei viską atlikote teisingai, modifikuotas virtualus serveris dabar turėtų naudoti naują PHP-FPM telkinį ir nesidalinti antriniais procesais su jokiais kitais virtualiais serveriais.
