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 8 su Linux Ubuntu o CentOS
Procedura aggiornata e ottimizzata per rispecchiare la disponibilità di PHP 8 e ottenere il miglior risultato con Ubuntu 20.04 LTS o CentOS 8
nota: In questo articolo ci concentreremo, nello specifico, sull'attivazione di PHP 8 con Nginx in esecuzione su Linux (le distribuzioni Ubuntu e CentOS, in particolare). Per la guida equivalente incentrata su Windows e la procedura equivalente con Apache:
» Leggi: La Grande Guida ad Apache, MySQL, PHP
La procedura è stata testata con Ubuntu 20.04 LTS (64 bit) e CentOS 8 (64 bit), ma è analoga per tutte le distribuzioni da esse derivate e, presumibilmente, per le iterazioni successive.
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
È inoltre indispensabile installare il pacchetto PHP 8 e, in particolare, PHP-FPM. L'approfondimento dedicato, con tutti i comandi da impartire, è disponibile qui:
» Leggi: Come installare PHP 8 (PHP-FPM)
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 -L -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
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/php8.0-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/php8.0-fpm.sock;
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/php8.0-fpm.sock failed (13: Permission denied)
Per prevenire il problema è sufficiente aggiungere l'utente di Nginx al gruppo autorizzato a connettersi al socket:
Con Ubuntu 20.04:
usermod -a -G www-data nginx
Con CentOS 8:
chgrp nginx /run/php-fpm/www.sock
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/
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.conf
Passo 7: Includere i file di PHP
Una volta davanti al file di configurazione, individuiamo il blocco server { ... }
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
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 su Linux Ubuntu/CentOS