Configurazione di PHP-FPM su Linux

Configurazione di PHP-FPM su Linux

Leggi 9 minuti

Non ci soffermeremo sulle impostazioni di base del server Nginx e sulle sue funzionalità, perché lo abbiamo già fatto nel nostro precedente articolo. Ma è necessario considerare alcuni parametri.

Definire e specificare il numero di gestori e il numero di connessioni per processore. A questo scopo, nel file /etc/nginx/nginx.conf specificheremo i valori:

worker_processes 1; worker_connections 1024;

L'idea di base nella scelta di questi valori è che il numero di client serviti è uguale al numero di gestori moltiplicato per il numero di connessioni per ogni processore. Nel nostro caso, quindi, si tratta di 1.024 client. Per evitare problemi di input-output, seguite la regola 1 del processore per core. È possibile determinare il numero di kernel tramite il comando

cat /proc/cpuinfo | grep processor processor : 0

Il mio processore ha un core. Pertanto, il numero di processori è uno. Il numero di connessioni può essere aggiunto a seconda delle esigenze. Questo parametro è già selezionato nella pratica.

Per motivi di sicurezza, è possibile attivare la direttiva

server_tokens off

Dal manuale: "Consente o vieta di rilasciare la versione di Nginx nei messaggi di errore e nel campo "Server" del titolo della risposta".

Questa direttiva viene aggiunta alla sezione http/server/local del file di configurazione.

Specifichiamo la dimensione dei dati trasmessi dal server:

client_max_body_size 20m; client_body_buffer_size 128k;

Questa direttiva viene aggiunta alla sezione http/server/local del file di configurazione.

Configurare la cache per i file statici. Questo serve a risparmiare risorse del server e larghezza di banda. Disattivare la registrazione e impostare la data di scadenza dell'intestazione a 100 giorni per i file statici.

location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$ { access_log off; log_not_found off; expires 360d; }

Per interagire con PHP-FPM, è possibile specificare un socket Unix. Per fare questo, dobbiamo scrivere nel nostro halo di configurazione:

# Passare gli script PHP a PHP-FPM locazione ~* \.php$ { fastcgi_index index.php; fastcgi_pass 127.0.0.1:9000; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_NAME $fastcgi_script_name; }

In prospettiva, nelle impostazioni di PHP-FPM, si deve specificare di ascoltare l'IP e la porta specificati nella nostra configurazione. Ciò avviene tramite la direttiva listening del file di configurazione del pool.

Per motivi di sicurezza, è possibile impedire l'accesso ai file nascosti.

location ~ /\. { access_log off; log_not_found off; deny all; }

La configurazione di PHP-FPM può essere suddivisa in due fasi: l'impostazione dei parametri globali, effettuata nel file

/etc/php5/fpm/php-fpm.conf

e la configurazione del pool. La configurazione del pool è specificata nei file della directory

/etc/php5/fpm/pool.d/

I parametri globali non sono così interessanti e possono essere letti nella documentazione, ma i parametri principali della configurazione dei pool saranno presi in considerazione.

Ogni pool è configurato con un file separato. Se si esegue il comando

ls -l /etc/php5/fpm/pool. d/

si vedrà che il sistema dispone già di un file di configurazione per il pool www. Vediamo la configurazione nel suo esempio.

Un punto importante della configurazione è la scelta del numero di gestori utilizzati per eseguire gli script PHP. Il loro numero deve essere scelto con saggezza. Un numero troppo basso di gestori non consentirà un'elaborazione efficiente e tempestiva delle richieste, ma un numero eccessivo esaurirà le risorse di cui il server ha bisogno per altri compiti. Il numero di processori deve essere scelto tenendo conto che, anche in caso di picchi di richieste al server, l'utilizzo delle sue risorse deve rimanere entro limiti ragionevoli e non portare al suo sovraccarico.

Ora diamo un'occhiata al file di configurazione e specifichiamo le seguenti opzioni. Oh sì, nel file di configurazione, le righe che iniziano con il simbolo ";" sono commenti e non sono considerate direttive.

Specificare la modalità dinamica di creazione dei processi, in modo che il numero di processi PHP-FPM avviati dipenda direttamente dal carico del server.

pm = dinamico

Impostare il numero massimo di processi figli.

pm.max_children = 6

Successivamente, è necessario specificare il numero di processi figli che verranno eseguiti non appena il server viene caricato. Per impostazione predefinita, questo valore è 2. È possibile aumentarlo se le risorse lo consentono; impostiamolo a 3.

pm.start_servers = 3

È necessario specificare anche il numero minimo e massimo di processi inattivi. Facciamo in modo che il numero minimo sia uguale al numero di processi in esecuzione all'avvio del server. Il numero massimo sarà impostato in modo da non superare il numero massimo consentito di processi figli.

pm.min_spare_servers = 3 pm.max_spare_servers = 5

Questi valori sono forniti a titolo di esempio e di spiegazione. Tuttavia, in ogni situazione specifica, possono variare. I valori ottimali dipendono dalle capacità del server e dalle risorse disponibili, dal numero e dalla complessità del codice PHP, dal numero di query e dal carico sul server. Questi parametri possono essere ottenuti solo attraverso l'applicazione pratica e il test del sito creato.

Ora consideriamo le impostazioni specifiche.

Innanzitutto, configureremo la registrazione delle informazioni sugli script che vengono eseguiti lentamente. Queste informazioni saranno utili per chiarire le ragioni dei ritardi del sito. Innanzitutto, si imposterà una soglia di tempo, dopo la quale l'esecuzione dello script sarà considerata lenta.

request_slowlog_timeout = 10s

Le unità di tempo possono essere specificate in secondi (s), minuti (m), ore (h) o giorni (d). Abbiamo specificato un tempo di 10 secondi.

Ora specificheremo anche il nome del file in cui verranno inviate le informazioni.

slowlog = /var/log/slowphp.log

Ora, questo file può essere studiato per lo studio degli script "lenti".

Se si desidera eseguire gli script in un ambiente isolato o in un ambiente chroot. Questa opzione viene solitamente utilizzata per motivi di sicurezza. È necessario impostare l'opzione chroot per abilitare questa funzione.

Quando si imposta questa opzione, occorre ricordare che ciò comporterà dei cambiamenti nell'elaborazione degli script PHP.

Tutti i percorsi dei file saranno ora considerati relativi alla directory specificata e gli script PHP non potranno accedere a socket situati al di fuori della directory specificata.

Per gestire più siti, potrebbe essere necessario aggiungere altri pool. In questo modo è possibile configurare impostazioni diverse per ogni singolo sito. Per creare un pool aggiuntivo, copiare il file

/etc/php5/fpm/pool.d/www.conf

con un nuovo nome, ad esempio

/etc/php5/fpm/pool.d/www2.conf

Aprire un nuovo file e cambiare il nome del pool. A tale scopo, all'inizio del file, cambiare la riga [www] in [www2].

E modificare la riga

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

su

listen = /var/run/ww2.sock

Nel caso in cui si voglia che il gestore ascolti sulla coppia ip:port, la direttiva listen avrà il seguente aspetto

listen = 127.0.0.1:9000

Quindi riavviamo il servizio

/etc/init. d/php5-fpm restart

DedicServerUA