Come abilitare e monitorare lo stato PHP-FPM in Nginx


PHP-FPM ( FastCGI Process Manager ) è un'implementazione PHP FastCGI alternativa fornita con una serie di funzionalità extra utili per siti web di qualsiasi dimensione, in particolare i siti che ricevono traffico elevato.

È comunemente usato nello stack LEMP ( Linux Nginx MySQL/MariaDB PHP ); Nginx utilizza PHP FastCGI per servire contenuti HTTP dinamici su una rete. Viene utilizzato per servire milioni di richieste PHP per centinaia di siti Web su server Web su Internet.

Una delle utili funzionalità di php-fpm è la pagina di stato integrata, che può aiutarti a monitorarne l'integrità. In questo articolo, mostreremo come abilitare la pagina di stato PHP-FPM su Linux.

Come abilitare la pagina di stato PHP-FPM in Linux

Per prima cosa apri il file di configurazione php-fpm e attiva la pagina di stato come mostrato.

$ sudo vim /etc/php-fpm.d/www.conf 
OR
$ sudo vim /etc/php/7.2/fpm/pool.d/www.conf	#for PHP versions 5.6, 7.0, 7.1

All'interno di questo file, trova e commenta la variabile pm.status_path =/status come mostrato nello screenshot.

Salva le modifiche e esci dal file.

Successivamente, controlla che il file di configurazione PHP-FPM non contenga errori eseguendo il comando seguente.

$ sudo php-fpm -t
OR
$ sudo php7.2-fpm -t

Quindi riavvia il servizio PHP-FPM per applicare le modifiche recenti.

$ sudo systemctl restart php-fpm
OR
$ sudo systemctl restart php7.2-fpm

Successivamente, modifica il file di configurazione predefinito blocco server ( host virtuale ) e aggiungi il blocco località in basso. Ad esempio sul sistema di test, il file di configurazione del blocco predefinito del server è /etc/nginx/conf.d/default.conf , per il sito test.lab .

$ sudo vim /etc/nginx/conf.d/default.conf 

Ecco il blocco località da aggiungere. In questa configurazione, abbiamo consentito l'accesso allo stato del processo PHP-FPM all'interno dell'host locale utilizzando la direttiva allow 127.0.0.1 per motivi di sicurezza.

location ~ ^/(status|ping)$ {
        allow 127.0.0.1;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_index index.php;
        include fastcgi_params;
        #fastcgi_pass 127.0.0.1:9000;
        fastcgi_pass   unix:/var/run/php7.2-fpm.sock;
}

Salva il file e chiudilo.

Quindi riavvia il server Nginx per applicare le modifiche precedenti.

$ sudo systemctl restart nginx

Ora apri un browser e digita l'URL http: //test.lab/status per visualizzare lo stato del processo PHP-FPM.

In alternativa, utilizzare il programma curl come segue, dove il flag -L specifica la posizione della pagina.

$ curl -L http://test.lab/status

Per impostazione predefinita, la pagina di stato stampa solo un riepilogo o uno stato breve. Per visualizzare lo stato per ogni processo del pool, passa "completo" nella stringa della query, ad esempio:

http://www.foo.bar/status?full

È possibile definire il formato di output (JSON, HTML o XML) come mostrato.

http://www.foo.bar/status?json&full
http://www.foo.bar/status?html&full
http://www.foo.bar/status?xml&full

Di seguito sono riportati i valori restituiti nello stato completo php-fpm , per ogni processo:

  • pid – PID of the process.
  • state process status (idle, running, etc.).
  • start time – date and time the process has started.
  • start since – number of seconds since the process has started.
  • requests – number of requests the process has served.
  • request duration – duration in µs of the requests.
  • request method – request method (GET, POST, etc.).
  • request URI – request URI with the query string.
  • content length – content length of the request (only with POST).
  • user – user (PHP_AUTH_USER) (or ‘-‘ if not set).
  • script – main script called (or ‘-‘ if not set).
  • last request cpu – %cpu the last request consumed (note that it’s always 0 if the process is not in Idle state).
  • last request memory – max amount of memory the last request consumed (it’s always 0 if the process is not in Idle state).

Questo è tutto per ora! In questo articolo, abbiamo spiegato come abilitare la pagina di stato php-fpm sotto il server web Nginx. Usa il modulo di feedback qui sotto per condividere i tuoi pensieri con noi.