Miklix

Come impostare pool PHP-FPM separati in NGINX

Pubblicato: 15 febbraio 2025 alle ore 11:52:33 UTC

In questo articolo esaminerò i passaggi di configurazione necessari per eseguire più pool PHP-FPM e connettere NGINX ad essi tramite FastCGI, consentendo la separazione dei processi e l'isolamento tra host virtuali.


Questa pagina è stata tradotta automaticamente dall'inglese per renderla accessibile al maggior numero di persone possibile. Purtroppo, la traduzione automatica non è ancora una tecnologia perfezionata, quindi possono verificarsi degli errori. Se preferite, potete consultare la versione originale in inglese qui:

How to Set Up Separate PHP-FPM Pools in NGINX

Le informazioni in questo post si basano su NGINX 1.4.6 e PHP-FPM 5.5.9 in esecuzione su Ubuntu Server 14.04 x64. Potrebbero essere valide o meno per altre versioni. (Aggiornamento: posso confermare che a partire da Ubuntu Server 24.04, PHP-FPM 8.3 e NGINX 1.24.0, tutte le istruzioni in questo post funzionano ancora)

Ci sono diversi vantaggi nell'impostare più pool di processi figlio PHP-FPM anziché eseguire tutto nello stesso pool. Sicurezza, separazione/isolamento e gestione delle risorse vengono in mente come alcuni dei principali.

Qualunque sia la tua motivazione, questo post ti aiuterà a realizzarla :-)


Parte 1 – Imposta un nuovo pool PHP-FPM

Per prima cosa, devi individuare la directory in cui PHP-FPM memorizza le configurazioni del pool. Su Ubuntu 14.04, questa è /etc/php5/fpm/pool.d di default. Probabilmente c'è già un file chiamato www.conf , che contiene la configurazione per il pool di default. Se non hai mai guardato quel file prima, è probabile che tu debba esaminarlo e modificare le impostazioni in esso contenute per la tua configurazione, poiché le impostazioni predefinite sono per un server abbastanza sottodimensionato, ma per ora fanne una copia in modo da non dover partire da zero:

sudo cp www.conf mypool.conf

Naturalmente, sostituisci “mypool” con il nome che preferisci per la tua piscina.

Ora apri il nuovo file usando nano o qualsiasi editor di testo tu preferisca e adattalo per adattarlo al tuo scopo. Probabilmente vorrai modificare i numeri dei processi figlio e forse l'utente e il gruppo sotto cui gira il pool, ma le due impostazioni che devi assolutamente cambiare sono il nome del pool e il socket su cui è in ascolto, altrimenti entrerà in conflitto con il pool esistente e le cose smetteranno di funzionare.

Il nome del pool è vicino alla parte superiore del file, racchiuso tra parentesi quadre. Di default è [www] . Cambialo con quello che vuoi; ti suggerisco lo stesso nome che hai dato al file di configurazione, quindi per il bene di questo esempio cambialo in [mypool] . Se non lo cambi, sembra che PHP-FPM caricherà solo il primo file di configurazione con quel nome, il che probabilmente causerà problemi.

Devi quindi cambiare il socket o l'indirizzo che stai ascoltando, che è definito dalla direttiva listen . Di default, PHP-FPM usa socket Unix, quindi la tua direttiva listen probabilmente apparirà così:

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

Puoi modificarlo con qualsiasi nome valido tu voglia, ma, ancora una volta, ti consiglio di attenerti a qualcosa di simile al nome del file di configurazione, quindi potresti ad esempio impostarlo in:

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

Bene, allora salviamo il file e chiudiamo l'editor di testo.


Parte 2 – Aggiornare la configurazione dell’host virtuale NGINX

Ora è necessario aprire il file host virtuale NGINX con la configurazione FastCGI che si desidera modificare in un nuovo pool, o meglio, connettersi al nuovo socket.

Di default su Ubuntu 14.04, questi sono archiviati in /etc/nginx/sites-available, ma possono anche essere definiti altrove. Probabilmente è meglio sapere dove si trovano le configurazioni del tuo host virtuale ;-)

Apri il file di configurazione pertinente nel tuo editor di testo preferito e cerca la direttiva fastcgi_pass (che deve essere in un contesto di posizione) che definisce il socket PHP-FPM. Devi modificare questo valore in modo che corrisponda alla nuova configurazione del pool PHP-FPM che hai creato nel passaggio uno, quindi continuando il nostro esempio dovresti modificarlo in:

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

Quindi salva e chiudi anche quel file. Ora hai quasi finito.


Parte 3 – Riavviare PHP-FPM e NGINX

Per applicare le modifiche di configurazione apportate, riavvia sia PHP-FPM che NGINX. Potrebbe essere sufficiente ricaricare anziché riavviare , ma trovo che sia un po' un terno al lotto, a seconda delle impostazioni modificate. Nel caso specifico, volevo che i vecchi processi figlio di PHP-FPM morissero subito, quindi era necessario riavviare PHP-FPM, ma per NGINX potrebbe essere sufficiente ricaricare. Provalo tu stesso.

sudo service php5-fpm restart
sudo service nginx restart

Ed ecco fatto. Se hai fatto tutto correttamente, l'host virtuale che hai modificato dovrebbe ora usare il nuovo pool PHP-FPM e non condividere processi figlio con nessun altro host virtuale.

Condividi su BlueskyCondividi su FacebookCondividi su LinkedInCondividi su TumblrCondividi su XCondividi su LinkedInAggiungi su Pinterest

Mikkel Bang Christensen

Sull'autore

Mikkel Bang Christensen
Mikkel è il creatore e proprietario di miklix.com. Ha oltre 20 anni di esperienza come programmatore di computer/sviluppatore di software ed è attualmente impiegato a tempo pieno in una grande azienda IT europea. Quando non scrive sul blog, dedica il suo tempo libero a una vasta gamma di interessi, hobby e attività, che in qualche modo si riflettono nella varietà di argomenti trattati in questo sito.