Nginx è il server web alternativo ad Apache HTTP Server che sta continuando a raccogliere un buon numero di consensi fra i professionisti del settore, in particolar modo quando si parla di erogare blog in Wordpress o, più in generale, applicazioni web realizzate in PHP. Ma Nginx, da solo, non è in grado di interpretare PHP: allo scopo, è dunque indispensabile installare il pacchetto PHP e interfacciare i due servizi. Vediamo allora come come configurare Nginx e PHP-FPM su Linux Ubuntu o CentOS

Guida Nginx PHP 7.3: come attivare/installare PHP-FPM Nginx Ubuntu/CentOS

Passo 1: Installare Nginx e PHP-FPM

Per prima cosa è necessario che sul PC o server sia già stato installato Nginx. Abbiamo proposto la guida passo per passo in questo approfondimento:

» Leggi: Come installare e configurare Nginx

Guida Nginx PHP 7.3: come attivare/installare PHP-FPM Nginx Ubuntu/CentOS

È inoltre indispensabile installare il pacchetto PHP e, in particolare, PHP-FPM. L'approfondimento dedicato, con tutti i comandi da impartire, è disponibile qui:

» Leggi: Come installare PHP 7.3 (PHP-FPM)

Guida Nginx PHP 7.3: come attivare/installare PHP-FPM Nginx Ubuntu/CentOS - 04_php-v_installed

Passo 2: Aprire il Terminale come root

Assicuratevi ora di aprire il Terminale e di acquisire i privilegi di root impartendo

sudo -s

In caso dovesse esservi richiesta la password, digitate quella dell'account corrente.

In alternativa, potete utilizzare il vostro utente "normale" ed anteporre sudo ad ogni comando mostrato di seguito.... ma divenire root immediatamente è molto più comodo.

Passo 3: Scaricare il file di configurazione di PHP

Procediamo ora a scaricare il file di configurazione che attiva la comunicazione fra Nginx e PHP-FPM:

curl -o /etc/nginx/php-fpm.conf https://turbolab.it/scarica/284

Il comando appena impartito renderà disponibile detto file nel percorso /etc/nginx/php-fpm.conf

Guida Nginx PHP 7.3: come attivare/installare PHP-FPM Nginx Ubuntu/CentOS - php-fpm scaricato

Passo 4: Attenti al socket!

Affinché la comunicazione fra Nginx e PHP-FPM funzioni correttamente, è necessario che i due servizi impieghino un socket condiviso: nella configurazione standard, si tratta di un file su disco. Il percorso di tale file deve essere inserito in due punti:

  • nel file di configurazione di Nginx che abbiamo appena scaricato
  • nel file di configurazione di PHP-FPM

Fate riferimento al capitoletto Passo 7: Scoprire il socket di PHP-FPM della nostra guida a PHP per scoprire quale sia il percorso di questo socket, quindi confrontatelo con quello presente nel file /etc/nginx/php-fpm.conf scaricato poco fa: i due devono essere assolutamente uguali, carattere per carattere. Se, ad esempio, la direttiva di PHP-FPM è simile alla seguente:

listen = /run/php/php7.3-fpm.sock

Dovrò modificare la direttiva all'interno del file di configurazione appena scaricato per farla "puntare" allo stesso file:

fastcgi_pass unix:/run/php/php7.3-fpm.sock;

Guida Nginx PHP 7.3: come attivare/installare PHP-FPM Nginx Ubuntu/CentOS - nginx php-fpm socket errore

Guida Nginx PHP 7.3: come attivare/installare PHP-FPM Nginx Ubuntu/CentOS - nginx php-fpm socket ok

In caso il percorso fosse diverso, modificate /etc/nginx/php-fpm.conf per uniformarlo.

Passo 5: Autorizzare Nginx a connettersi al socket

Proseguiamo facendo in modo che Nginx sia autorizzato a connettersi al socket. In caso contrario, Nginx mostrerà solo l'errore 502 Bad Gateway e nei log apparirà una dicitura simile a connect() to unix:/run/php/php7.3-fpm.sock failed (13: Permission denied)

Guida Nginx PHP 7.3: come attivare/installare PHP-FPM Nginx Ubuntu/CentOS - nginx php-fpm errore 502 permission denied

Per prevenire il problema è sufficiente aggiungere l'utente di Nginx al gruppo autorizzato a connettersi al socket:

usermod -a -G www-data nginx

La modifica sarà effettiva solo dopo il riavvio di Nginx, operazione che svolgeremo alla fine della configurazione.

Passo 6: Aprire il file di configurazione del sito

Il file di configurazione scaricato al Passo 3 è attualmente "inerte". Dobbiamo dunque procedere ad includerlo esplicitamente all'interno di ogni sito Nginx (server block) nel quale vogliamo rendere disponibile PHP.

Iniziamo individuando il file di configurazione del sito per il quale vogliamo attivare PHP:

  • se avete installato Nginx tramite il repository ufficiale dei suoi sviluppatori (come altamente consigliato nella nostra guida a Nginx), detto file è situato nella cartella /etc/nginx/conf.d/
  • se avete installato Nginx su Ubuntu tramite i repository propri della distribuzione, guardate invece in /etc/nginx/sites-enabled/

Guida Nginx PHP 7.3: come attivare/installare PHP-FPM Nginx Ubuntu/CentOS - nginx percorso virtualhost

Una volta individuato il file di configurazione , apritelo in modifica. Per questo esempio utilizzerò il file chiamato local che avevamo preparato nella guida a Nginx per erogare il sito di esempio raggiungibile all'indirizzo http://localhost:

nano /etc/nginx/conf.d/local

Passo 7: Includere i file di PHP

Una volta davanti al file di configurazione, individuiamo il blocco server { ... }

Guida Nginx PHP 7.3: come attivare/installare PHP-FPM Nginx Ubuntu/CentOS

Ora inseriamovi la direttiva che include il file di configurazione di PHP scaricato al Passo 3:

include "/etc/nginx/php-fpm.conf";

Possiamo inserire questa direttiva in un punto qualsiasi all'interno del blocco server { ... }. Personalmente, amo metterla verso la fine, poiché questa istruzione è presente praticamente in tutti i miei progetti e tendo quindi a darla per scontata

Guida Nginx PHP 7.3: come attivare/installare PHP-FPM Nginx Ubuntu/CentOS - nginx include php-fpm

Passo 8: Riavvio di Nginx

Per rendere effettive le modifiche dobbiamo riavviare Nginx:

systemctl restart nginx

Passo 9: È tutto pronto!

Se non vengono mostrati messaggi di errore, significa che è tutto pronto. Fare riferimento alla guida generale a PHP-FPM per proseguire con le verifiche:

» Leggi: Come installare PHP 7.3 (PHP-FPM)

Guida Nginx PHP 7.3: come attivare/installare PHP-FPM Nginx Ubuntu/CentOS