Apache HTTP Server è lo strumento principe per approntare server web ed erogare così contenuti come quello che state leggendo in questo momento. Se però desideriamo utilizzare un gestore di contenuti (CMS) come Wordpress o uno strumento di eCommerce come Magento o Prestashop abbiamo bisogno anche dell'interprete PHP. In questa guida vedremo dunque come configurare Apache per elaborare codice PHP 8 tramite PHP-FPM.

Procedura aggiornata e ottimizzata per rispecchiare la disponibilità di PHP 8 e ottenere il miglior risultato con Ubuntu 20.04 LTS o CentOS 8

Guida definitiva Apache PHP 8 Ubuntu CentOS: come attivare, installare, configurare PHP-FPM Apache Linux

Nel prosieguo mi riferirò al software "Apache HTTP Server" chiamandolo solo "Apache", per semplicità e per risultare più colloquiale.

nota: In questo articolo ci concentreremo, nello specifico, sull'attivazione di PHP 8 con Apache in esecuzione su Linux (le distribuzioni Ubuntu e CentOS, in particolare). Per la guida equivalente incentrata su Windows e la procedura equivalente con Nginx:

» 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 Apache e PHP-FPM

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

» Leggi: Guida server web: come installare Apache su Linux Ubuntu/CentOS

Guida definitiva Apache PHP 8 Ubuntu CentOS: come attivare, installare, configurare PHP-FPM Apache Linux - apache2 ubuntu default page

È 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)

Guida definitiva Apache PHP 8 Ubuntu CentOS: come attivare, installare, configurare PHP-FPM Apache Linux - 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: Abilitare mod_proxy_fcgi

Procediamo dunque ad abilitare proxy_fcgi: è il modulo di Apache che utilizzeremo per interfacciare il server web con PHP-FPM. Il comando è:

  • Ubuntu 20.04: a2enmod proxy_fcgi
  • CentOS 8: nulla da fare (è già attivo di default)

Passo 4: Scaricare apache_php-proxy-fCgi.conf

Dobbiamo ora configurare Apache di modo che, concretamente, si connetta a PHP-FPM per interpretare il codice PHP.

Scarichiamo dunque il file di configurazione per Apache già parzialmente preparato. Il comando è:

  • Ubuntu 20.04: apt install curl -y && curl https://turbolab.it/scarica/169 -o /etc/apache2/mods-enabled/php-proxy-fcgi.conf
  • CentOS 8: rm -f /etc/httpd/conf.modules.d/*php*.conf && curl https://turbolab.it/scarica/169 -o /etc/httpd/conf.modules.d/php-proxy-fcgi.conf

Poiché abbiamo salvato il file di configurazione nella cartella specifica, Apache lo auto-caricherà insieme agli altri ad ogni avvio del servizio.

Passo 5: Specificare il percorso del socket

Affinché la comunicazione fra Apache 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 Apache 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 php-proxy-fcgi.conf scaricato poco fa: i due devono essere assolutamente uguali, carattere per carattere.

Apriamo dunque con l'editor il file scaricato poco fa:

  • Ubuntu 20.04: nano /etc/apache2/mods-enabled/php-proxy-fcgi.conf
  • CentOS 8: nano /etc/httpd/conf.modules.d/php-proxy-fcgi.conf

Notiamo la riga che inizia con la direttiva SetHandler: è proprio qui che dobbiamo specificare dove si trova il socket di PHP-FPM. Inserire dunque il percorso del socket dopo il prefisso proxy:unix:. Mantenere inalterato tutto il resto. Esempio:

SetHandler "proxy:unix:/run/php/php8.0-fpm.sock|fcgi://127.0.0.1:9000/"

Dove /run/php/php8.0-fpm.sock è il percorso del socket.

Notate che è presente una barra (/) come ultimo carattere: deve essere mantenuta

Guida definitiva Apache PHP 8 Ubuntu CentOS: come attivare, installare, configurare PHP-FPM Apache Linux - apache_proxy_socket

Salvate il documento e chiudere l'editor.

Passo 6: Rimuovere DirectoryIndex

Dobbiamo infine apportare una modifica alla direttiva DirectoryIndex di Apache che stabilisce quale file restituire quando l'utente richiede via browser una directory oppure il dominio del nostro sito senza indicare un file specifico (esempio: http://miosito.com). Di default, Apache restituisce index.html, ma per generare dinamicamente la pagina "home" con PHP dobbiamo usare index.php.

Il file di configurazione scaricato al Passo 4 include già la direttiva configurata in modo opportuno, ma per renderla effettiva dobbiamo eliminare il default di Apache tramite questo comando:

  • Ubuntu 20.04: rm -f /etc/apache2/mods-available/dir.conf
  • CentOS 8: sed -i -e 's/DirectoryIndex/#DirectoryIndex/g' /etc/httpd/conf/httpd.conf

In alternativa, potete semplicemente commentare la la linea del file che disturba tramite un editor di testo:

  1. aprire il file di configurazione generale di Apache
  2. cercate la direttiva DirectoryIndex index.html
  3. anteponetevi il carattere # ("cancelletto", simbolo di "commento") per disattivarla

Guida definitiva Apache PHP 8 Ubuntu CentOS: come attivare, installare, configurare PHP-FPM Apache Linux

Salvare e chiudere l'editor.

Passo 7: Riavviare Apache

Procediamo ora a riavviare Apache per rendere effettive le modifiche. Il comando è:

  • Ubuntu 20.04: systemctl restart apache2
  • CentOS 8: systemctl restart httpd

Passo 8: È 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 8 (PHP-FPM)

Guida definitiva Apache PHP 8 Ubuntu CentOS: come attivare, installare, configurare PHP-FPM Apache Linux