- Simone Piccardi
- Maggio 2024
- Sistemi
Il supporto del server web Apache, per molti anni, si è basato, per l’esecuzione di applicazioni web riferite su PHP ad un modulo di estensione, mod_php
, che consente ad Apache di eseguire direttamente il codice.
Il modulo però aveva una limitazione principale: la necessità di usare la versione tradizionale di Apache a processi singoli (il cosiddetto MPM prefork), e non la nuova versione multi-tread più efficiente e veloce (con il cosiddetto MPM event).
Successivamente però, con le versioni più recenti di PHP la modalità consigliata per l’esecuzione di applicazioni web è divenuta quella di FPM (FastCGI Process Manager); vederemo in questo articolo come passare ad utilizzarla.
Qui di seguito faremo parleremo di una installazione effettuata su una distribuzione Debian o derivata, in ogni caso, i passaggi concettuali sono comunque gli stessi anche per altre distribuzioni, ma possono mancare alcune automazioni che Debian fornisce con la sua installazione di Apache. Il supporto tradizionale per PHP è fornito dal pacchetto libapache2-mod-php
, mentre quello di FPM dal pacchetto php-fpm
.
Per passare dall’MPM prefork all’MPM event sarà necessario passare dall’uno all’altro e riconfigurare Apache, questo fornisce una lunga serie di vantaggi, fra cui il più rilevante è la possibilità di abilitare il supporto per l’uso di HTTP/2, la nuova versione del protocollo HTTP che consente un grosso aumento delle prestazioni.
Come primo step per eseguire PHP con FPM è sufficiente semplicemente installare il pacchetto php-fpm
con apt install php-fpm
, che a sua volta, installerà il programma per la versione specifica di PHP in uso nella propria distribuzione: ad esempio su Debian 12, la attuale stable
, verrà eseguito il servizio php8.2-fpm
; tutte le nuove configurazioni che si applicano a questo servizio verranno spostate nella corrispondente directory /etc/php/8.2/fpm/
.
Su Debian e derivate infatti vengono mantenute in directory separate le configurazioni relative all’esecuzione dei programmi PHP, suddividendole sotto /etc/php/
per numero di versione di PHP installata (vengono infatti supportate anche più versioni di PHP in contemporanea). Viene inoltre utilizzata una ulteriore sottodirectory per poter configurare in maniera separata le diverse modalità con cui si eseguono i programmi: cli
per l’esecuzione a riga di comando, apache
per quelli eseguiti con mod_php
, ed appunto fpm
per l’esecuzione con FPM.
Dunque, se stiamo utilizzando la modalità tradizionale di mod_php
sarà necessario replicare la configurazione per php-fpm
; allora, per mantenere pulita la configurazione, è stato sufficiente aggiungere le modifiche ai parametri di PHP su un file ad hoc in /etc/php/8.2/apache/conf.d
(ad esempio 99-local.ini
), evitando modifiche ai default di php.ini
, tutto quello che sarà necessario fare è:
cp -a /etc/php/8.2/apache2/conf.d/99-local.ini /etc/php/8.2/fpm/conf.d/
altrimenti si dovranno trovare le modifiche effettuate su php.ini
e riapplicarle (e potrebbe essere l’occasione per metterle da sole nel file indicato).
Si esegua infine:
systemctl restart php8.2-fpm.service
per fare prendere al servizio le modifiche ai parametri.
Arrivati fin qui, per effettuare il passaggio, bisognerà disinstallare libapache2-mod-php
e procedere con la riconfigurazione di Apache per l’uso di php-fpm
al suo posto. Questo, grazie alla ottima pacchettizzazione di Debian che fornisce un sistema per la gestione di moduli e frammenti di configurazione ed installa con il pacchetto di php-fpm
una adeguata configurazione in /etc/apache2/conf-available/php8.2-fpm.conf
, si fa semplicemente eseguendo i seguenti comandi:
apt-get remove --purge libapache2-mod-php8.2 a2dismod mpm_prefork a2enmod mpm_event a2enmod proxy_fcgi setenvif http2 a2enconf php8.2-fpm systemctl restart apache2
e non c’è bisogno di toccare nulla nella configurazione degli eventuali virtual host presenti.
Dopo che sarà stata cambiata la configurazione, sarà possibile verificarne il funzionamento controllando l’uso di HTTP/2. Sarà sufficiente andare su una qualunque pagina servita da Apache, attivando gli strumenti di sviluppo web di Firefox (o gli analoghi di altro browser); ricaricando la pagina si potrà verificare che le richieste e le risposte utilizzano la versione HTTP/2 del protocollo.
A questo punto dovreste avere tutte le informazioni necessarie per eseguire la migrazione Apache correttamente, ma se doveste avere dubbi o difficoltà, potete contattarci compilando il form contatti del nostro sito web.
La redazione