NGINX è il server web che costituisce oggi lo standard de facto quando si parla di pubblicare siti basati su WordPress o, più in generale, applicazioni web realizzate in PHP. Ma NGINX, da solo, non è in grado di eseguire codice PHP: la dotazione base permette infatti solamente di erogare file e pagine HTML statiche. Per utilizzare PHP con NGINX è dunque indispensabile installare PHP e PHP-FPM, poi interfacciarli con NGINIX. Vediamo allora come configurare NGINX e PHP 8 su Ubuntu

Procedura aggiornata e ottimizzata per funzionare al meglio con PHP 8.4 e Ubuntu 24.04

In questo articolo ci concentreremo, nello specifico, sulla configurazione di NGINX e PHP. Per la guida equivalente, incentrata su Apache HTTP Server al posto di NGINX, consulta quest'altro approfondimento dedicato:

» Leggi: Installare e configurare un server web: La Grande Guida ad Apache/Nginx, PHP, MySQL su Windows e Linux

La procedura seguente è stata testata su Ubuntu 24.04, 22.04 e 20.04 (sia "Desktop", sia "Server"), ma è analoga per tutte le distribuzioni derivate (fra le quali "Mint") e, presumibilmente, per le iterazioni successive. L'ultima versione testata è PHP 8.4, ma nel corso degli anni ho svolto la medesima configurazione anche sulle generazioni precedenti: PHP 8.x, PHP 7.x e PHP 5.6

Guida PHP 8 NGINX Ubuntu: come attivare, installare configurare PHP-FPM (video)

Una stesura precedente di questa guida (archiviata qui) trattava anche CentOS, mentre oggi è focalizzata unicamente su Ubuntu.

installare NGINX

La prima cosa da fare per configurare NGINX e PHP è proprio... installare NGINX. Segui dunque la procedura trattata in quest'altra guida:

» Leggi: Come installare NGINX su Ubuntu

Guida PHP 8 NGINX Ubuntu: come attivare, installare configurare PHP-FPM (video) - COME INSTALLARE UN SERVER WEB La Guida Definitiva per configurare NGINX cover

Ti raccomando caldamente di non andare oltre fino a quando non sarai riuscito a visualizzare una pagina HTML statica erogata da NGINX.

Installare PHP-FPM

Procedi dunque a installare PHP. Nello specifico: NGINX richiede PHP-FPM (FastCGI Process Manager). Abbiamo visto la procedura per installarlo in quest'altro approfondimento:

» Leggi: Guida: come installare PHP su Ubuntu Linux (PHP-FPM)

Guida PHP 8 NGINX Ubuntu: come attivare, installare configurare PHP-FPM (video) - server php ubuntu

Ti raccomando caldamente di preferire lo script automatico indicato in quell'articolo: oltre a risparmiarti il tedio di svolgere manualmente le operazioni necessarie a installare PHP, lo script automatico svolge anche alcuni passi presentati qui di seguito.

Se dunque hai usato lo script automatico, salta direttamente al paragrafo Aprire il file di configurazione del sito della presente guida.

PHP 8 e NGINX, Passo 1: Diventare root

Lo script proposto installa PHP su Ubuntu automaticamente ed è la modalità che, personalmente, raccomando. Se però hai installato PHP manualmente, puoi metterlo in comunicazione con NGINX seguendo i passaggi presentati di seguito.

Per prima cosa, devi acquisire i privilegi massimi diventando root. Il comando è:

sudo -s

In caso ti fosse richiesta la password, digita quella del tuo utente Linux

Guida PHP 8 NGINX Ubuntu: come attivare, installare configurare PHP-FPM (video)

» Leggi anche: Sudo senza password con Ubuntu: come disabilitare la richiesta di password quando si eseguono comandi come root (video)

PHP 8 e NGINX, Passo 2: Scaricare il file di configurazione (php-fpm.conf)

Procedi scaricando il file di configurazione (visualizzabile qui) che attiva la comunicazione fra NGINX e PHP-FPM:

apt update && apt install curl -y && curl -Lo /etc/nginx/php-fpm.conf https://turbolab.it/scarica/461

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

Guida PHP 8 NGINX Ubuntu: come attivare, installare configurare PHP-FPM (video) - php-fpm scaricato

PHP 8 e NGINX, Passo 3: Autorizzare Nginx a connettersi al socket

Proseguiamo garantendo all'utente nginx, ovvero quello che esegue il processo del server web, i permessi per connettersi al socket PHP. In caso contrario, Nginx mostrerà solo l'errore 502 Bad Gateway e nei log apparirà una dicitura simile a connect() to unix:/run/php/php-fpm.sock failed (13: Permission denied)

Guida PHP 8 NGINX Ubuntu: come attivare, installare configurare PHP-FPM (video) - 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 -aG www-data nginx

La modifica diverrà effettiva solo dopo il riavvio di NGINX... e, questa volta, serve proprio un "riavvio", non basta un "reload". Allo scopo, impartisci:

nginx -t && service nginx restart

(riprendi da qui se hai usato lo script automatico!) Aprire il file di configurazione del sito

Dobbiamo ora attivare il supporto a PHP includendo, all'interno della configurazione di ogni sito erogato da NGINX (server {...}), le apposite direttive che dicono: "Hey, NGINX! Quando ti viene richiesto un file .php, passalo a quest'altro programma, che è l'interprete PHP, e attendi la sua risposta, prima di mostrarlo al browser web del visitatore!".

Iniziamo individuando il file di configurazione del sito erogato da NGINX per il quale vuoi attivare PHP:

  • se hai 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 hai installato NGINX tramite i repository di Ubuntu, guarda in /etc/nginx/sites-enabled/

Guida PHP 8 NGINX Ubuntu: come attivare, installare configurare PHP-FPM (video)

Una volta individuato il file di configurazione, aprilo in modifica impartendo un comando simile a:

sudo nano /etc/nginx/conf.d/example.com.conf

Per questo esempio utilizzerò il file chiamato example.com.conf che avevamo preparato nella guida a NGINX per erogare il sito di esempio.

Attivare il supporto a PHP

Una volta davanti al file di configurazione, individua il blocco server { ... }. Al suo interno, in un punto qualsiasi, inserisci la direttiva che attiva PHP:

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

Fai la massima attenzione a conservare il simbolo ; a fine riga

Guida PHP 8 NGINX Ubuntu: come attivare, installare configurare PHP-FPM (video)

Una volta fatto, salva e chiudi battendo da tastiera Ctrl+O, poi Invio, poi Ctrl+X.

Nota che, se hai installato molteplici versioni di PHP contemporaneamente, puoi indicare di usare una versione specifica definendo la variabile $PHP_VER prima di includere il file. Ad esempio:

set $PHP_VER 8.4;

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

Ricaricare la configurazione di NGINX

Devi ora impartire il comando per ricaricare la configurazione aggiornata e rendere effettive le ultime modifiche:

sudo nginx -t && sudo service nginx reload

Conclusione

Torna ora alla guida a PHP per il test e la conclusione:

» Leggi: Guida: come installare PHP su Ubuntu