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
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
È 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: 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
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:
- aprire il file di configurazione generale di Apache
- cercate la direttiva
DirectoryIndex index.html
- anteponetevi il carattere
#
("cancelletto", simbolo di "commento") per disattivarla
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)