Miklix

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.


Hierdie bladsy is masjienvertaal uit Engels om dit vir soveel mense moontlik toeganklik te maak. Ongelukkig is masjienvertaling nog nie 'n volmaakte tegnologie nie, dus kan foute voorkom. As jy verkies, kan jy die oorspronklike Engelse weergawe hier sien:

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:

sudo cp www.conf mypool.conf

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:

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

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:

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

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

Deel op BlueskyDeel op FacebookDeel op LinkedInDeel op TumblrDeel op XDeel op LinkedInSpeld op Pinterest

Mikkel Christensen

Oor die skrywer

Mikkel Christensen
Mikkel is die skepper en eienaar van miklix.com. Hy het meer as 20 jaar ondervinding as 'n professionele rekenaarprogrammeerder/sagteware-ontwikkelaar en is tans voltyds in diens van 'n groot Europese IT-korporasie. Wanneer hy nie blog nie, spandeer hy sy vrye tyd aan 'n groot verskeidenheid belangstellings, stokperdjies en aktiwiteite, wat tot 'n mate weerspieël kan word in die verskeidenheid onderwerpe wat op hierdie webwerf gedek word.