Miklix

Sådan opsætter du separate PHP-FPM-puljer i NGINX

Udgivet: 15. februar 2025 kl. 11.49.19 UTC
Sidst opdateret: 12. januar 2026 kl. 08.29.53 UTC

I denne artikel gennemgår jeg de konfigurationstrin, der er nødvendige for at køre flere PHP-FPM-pools og forbinde NGINX til dem via FastCGI, hvilket muliggør processeparation og isolering mellem virtuelle værter.


Denne side er blevet maskinoversat fra engelsk for at gøre den tilgængelig for så mange mennesker som muligt. Desværre er maskinoversættelse endnu ikke en perfekt teknologi, så der kan forekomme fejl. Hvis du foretrækker det, kan du se den originale engelske version her:

How to Set Up Separate PHP-FPM Pools in NGINX

Oplysningerne i dette indlæg er baseret på NGINX 1.4.6 og PHP-FPM 5.5.9, der kører på Ubuntu Server 14.04 x64. Det kan være gyldigt for andre versioner, men det kan være ugyldigt. (Opdatering: Jeg kan bekræfte, at fra og med Ubuntu Server 24.04, PHP-FPM 8.3 og NGINX 1.24.0 fungerer alle instruktionerne i dette indlæg stadig.)

Der er en række fordele ved at opsætte flere PHP-FPM-underprocespuljer i stedet for at køre alt i den samme pulje. Sikkerhed, separation/isolering og ressourcehåndtering er nogle af de vigtigste.

Uanset hvad din motivation er, vil dette indlæg hjælpe dig med at gøre det :-)

Del 1 – Opsæt en ny PHP-FPM-pulje

Først skal du finde den mappe, hvor PHP-FPM gemmer sine poolkonfigurationer. På Ubuntu 14.04 er dette som standard /etc/php5/fpm/pool.d. Der er sandsynligvis allerede en fil der kaldet www.conf, som indeholder konfigurationen for standardpoolen. Hvis du ikke har kigget på den fil før, er der stor sandsynlighed for, at du bør gennemgå den og justere indstillingerne i den til din opsætning, da standardindstillingerne er til en ret underdimensioneret server, men for nu skal du bare lave en kopi af den, så vi ikke behøver at starte forfra:

sudo cp www.conf mypool.conf

Selvfølgelig skal du erstatte "minpool" med det, du ønsker, at din pool skal hedde.

Åbn nu den nye fil ved hjælp af nano eller hvilken teksteditor du foretrækker, og juster den, så den passer til dit formål. Du vil sandsynligvis gerne justere numrene på underordnede processer og muligvis hvilken bruger og gruppe puljen kører under, men de to indstillinger, du absolut skal ændre, er puljens navn og den socket, den lytter til, ellers vil den komme i konflikt med den eksisterende pulje, og tingene vil holde op med at virke.

Navnet på poolen er øverst i filen, omgivet af firkantede parenteser. Som standard er det [www]. Skift dette til hvad du vil; jeg foreslår det samme navn, som du gav konfigurationsfilen, så for dette eksempels skyld, skift det til [mypool]. Hvis du ikke ændrer det, ser det ud til, at PHP-FPM kun indlæser den første konfigurationsfil med det navn, hvilket sandsynligvis vil ødelægge det.

Du skal derefter ændre den socket eller adresse, du lytter til, som er defineret af listen-direktivet. Som standard bruger PHP-FPM Unix-sockets, så dit listen-direktiv vil sandsynligvis se sådan ud:

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

Du kan ændre det til et hvilket som helst gyldigt navn, men igen foreslår jeg, at du holder dig til noget, der ligner konfigurationsfilnavnet, så du kan for eksempel indstille det til:

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

Okay, gem derefter filen og luk teksteditoren.

Del 2 – Opdater NGINX virtuel værtkonfiguration

Nu skal du åbne NGINX virtuelle værtsfil med den FastCGI-konfiguration, du vil ændre til en ny pool – eller rettere sagt, oprette forbindelse til den nye socket.

Som standard på Ubuntu 14.04 gemmes disse under /etc/nginx/sites-available, men kan også defineres andre steder. Du ved nok bedst, hvor dine virtuelle værtkonfigurationer er placeret ;-)

Åbn den relevante konfigurationsfil i din foretrukne teksteditor, og søg efter fastcgi_pass-direktivet (som skal være i en lokationskontekst), der definerer PHP-FPM-socket'en. Du skal ændre denne værdi, så den matcher den nye PHP-FPM-poolkonfiguration, du lavede under trin et. Hvis du fortsætter med vores eksempel, skal du ændre dette til:

Fastcgi_pass unix:/var/run/php5-fpm-mypool.sock;

Gem og luk derefter også den fil. Du er næsten færdig nu.

Del 3 – Genstart PHP-FPM og NGINX

For at anvende de konfigurationsændringer, du har foretaget, skal du genstarte både PHP-FPM og NGINX. Det kan være nok at genindlæse i stedet for at genstarte, men jeg synes, det er lidt uoverkommeligt, afhængigt af hvilke indstillinger der ændres. I det specifikke tilfælde ønskede jeg, at de gamle PHP-FPM-underprocesser skulle lukke med det samme, så genstart af PHP-FPM var nødvendig, men for NGINX kan en genindlæsning være tilstrækkelig. Prøv det selv.

sudo service php5-fpm restart
sudo service nginx restart

Og voila, du er færdig. Hvis du gjorde alt korrekt, burde den virtuelle vært, du ændrede, nu bruge den nye PHP-FPM-pool og ikke dele underprocesser med andre virtuelle værter.

Del på BlueskyDel på FacebookDel på LinkedInDel på TumblrDel på XDel på LinkedInFastgør på Pinterest

Mikkel Christensen

Om forfatteren

Mikkel Christensen
Mikkel er skaberen og ejeren af miklix.com. Han har over 20 års erfaring som professionel computerprogrammør/softwareudvikler og er i øjeblikket fuldtidsansat i en stor europæisk IT-virksomhed. Når han ikke blogger, bruger han sin fritid på en lang række interesser, hobbyer og aktiviteter, som i et vist omfang afspejles i de mange forskellige emner, der dækkes på dette websted.