Hoe om aparte PHP-FPM-poele in NGINX op te stel
Gepubliseer: 15 Februarie 2025 om 11:55:12 UTC
Laas opgedateer: 12 Januarie 2026 om 08:30:20 UTC
In hierdie artikel gaan ek oor die konfigurasiestappe wat nodig is om verskeie PHP-FPM-poele te laat loop en NGINX via FastCGI aan hulle te koppel, wat prosesskeiding en isolasie tussen virtuele gashere moontlik maak.
How to Set Up Separate PHP-FPM Pools in NGINX
Die inligting in hierdie plasing is gebaseer op NGINX 1.4.6 en PHP-FPM 5.5.9 wat op Ubuntu Server 14.04 x64 loop. Dit mag dalk geldig wees vir ander weergawes, maar nie. (Opdatering: Ek kan bevestig dat vanaf Ubuntu Server 24.04, PHP-FPM 8.3 en NGINX 1.24.0, al die instruksies in hierdie plasing steeds werk)
Daar is 'n aantal voordele daaraan verbonde om verskeie PHP-FPM-kinderprosespoele op te stel eerder as om alles in dieselfde poel te laat loop. Sekuriteit, skeiding/isolasie en hulpbronbestuur is 'n paar belangrike voordele.
Ongeag wat jou motivering is, hierdie plasing sal jou help om dit te doen :-)
Deel 1 – Stel 'n nuwe PHP-FPM-poel op
Eerstens moet jy die gids vind waar PHP-FPM sy poelkonfigurasies stoor. Op Ubuntu 14.04 is dit /etc/php5/fpm/pool.d by verstek. Daar is waarskynlik reeds 'n lêer daar genaamd www.conf, wat die konfigurasie vir die verstekpoel bevat. As jy nog nie voorheen na daardie lêer gekyk het nie, is die kanse goed dat jy daardeur moet gaan en die instellings daarin vir jou opstelling moet aanpas, aangesien die verstekwaardes vir 'n redelik onderkragtige bediener is, maar vir nou, maak net 'n kopie daarvan sodat ons nie van voor af hoef te begin nie:
Natuurlik, vervang "mypool" met wat jy ook al wil hê jou swembad genoem moet word.
Maak nou die nuwe lêer oop met behulp van nano of watter teksredigeerder jy ook al verkies en pas dit aan om by jou doel te pas. Jy sal waarskynlik die kindprosesnommers wil aanpas en moontlik onder watter gebruiker en groep die poel loop, maar die twee instellings wat jy absoluut moet verander, is die poel se naam en die sok waarna dit luister, anders sal dit bots met die bestaande poel en dinge sal ophou werk.
Die naam van die poel is naby die bokant van die lêer, tussen vierkantige hakies. Standaard is dit [www]. Verander dit na wat jy wil; ek stel voor dat jy dieselfde naam gee as wat jy die konfigurasielêer gegee het, so vir hierdie voorbeeld verander dit na [mypool]. As jy dit nie verander nie, lyk dit asof PHP-FPM slegs die eerste konfigurasielêer met daardie naam sal laai, wat waarskynlik dinge sal breek.
Jy moet dan die sok of adres waarna jy luister verander, wat deur die luister-opdrag gedefinieer word. PHP-FPM gebruik standaard Unix-sokette, so jou luister-opdrag sal waarskynlik so lyk:
Jy kan dit verander na enige geldige naam wat jy wil, maar weereens, ek stel voor dat jy by iets soortgelyk aan die konfigurasielêernaam bly, so jy kan dit byvoorbeeld stel na:
Goed dan, stoor die lêer en verlaat die teksredigeerder.
Deel 2 – Opdateer NGINX virtuele gasheerkonfigurasie
Nou moet jy die NGINX virtuele gasheerlêer oopmaak met die FastCGI-konfigurasie wat jy na 'n nuwe poel wil verander - of liewer, aan die nuwe sok koppel.
Standaard op Ubuntu 14.04 word hierdie gestoor onder /etc/nginx/sites-available, maar kan ook elders gedefinieer word. Jy weet waarskynlik die beste waar jou virtuele gasheerkonfigurasies geleë is ;-)
Maak die relevante konfigurasielêer in jou gunsteling teksredigeerder oop en soek vir die fastcgi_pass-opdrag (wat in 'n liggingskonteks moet wees) wat die PHP-FPM-sok definieer. Jy moet hierdie waarde verander sodat dit ooreenstem met die nuwe PHP-FPM-poelkonfigurasie wat jy onder stap een gemaak het, dus as jy ons voorbeeld voortsit, sal jy dit verander na:
Fastcgi_pass unix:/var/run/php5-fpm-mypool.sock;
Stoor en maak dan ook daardie lêer toe. Jy is nou amper klaar.
Deel 3 – Herbegin PHP-FPM en NGINX
Om die konfigurasieveranderinge wat jy gemaak het, toe te pas, herbegin beide PHP-FPM en NGINX. Dit mag dalk genoeg wees om te herlaai in plaas van om te herbegin, maar ek vind dit 'n bietjie wisselvallig, afhangende van watter instellings verander word. In die spesifieke geval wou ek hê dat die ou PHP-FPM-kinderprosesse dadelik moes sterf, so die herbegin van PHP-FPM was nodig, maar vir NGINX mag 'n herlaai voldoende wees. Probeer dit self.
sudo service nginx restart
En siedaar, jy is klaar. As jy alles reg gedoen het, behoort die virtuele gasheer wat jy gewysig het nou die nuwe PHP-FPM-poel te gebruik en nie kinderprosesse met enige ander virtuele gashere te deel nie.
