Progetto

Generale

Profilo

Apache-modphp-to-phpfpm » Cronologia » Versione 4

Versione 3 (Simone Piccardi, 20-02-2023 18:11) → Versione 4/8 (Simone Piccardi, 10-05-2024 10:23)

h1. Migrare Apache da mod_php a php-fpm 

 Per molti anni il supporto del server web Apache per l'esecuzione Il passaggio della gestione di applicazioni web basate su PHP è stato basato su un modulo di estensione, @mod_php@, che consentiva da @libapache2-mod_php@ a @php-fpm@, oltre ad Apache di eseguire direttamente il codice PHP. Il modulo però aveva essere consigliato come limitazione principale quella della necessità di usare la versione tradizionale a processi singoli (il cosiddetto MPM prefork) di Apache, e non la nuova versione multi-tread (con il cosiddetto MPM event). Con le versioni più recenti di PHP però la modalità consigliata migliore per l'esecuzione di eseguire applicazioni web è divenuta quella di FPM (FastCGI Process Manager); vederemo in questo articolo come passare ad utilizzarla. 

 Nelle seguenti istruzioni faremo riferimento ad una installazione effettuata su una distribuzione Debian o derivata, i passi sono comunque analoghi PHP con Apache, consente in genere un notevole miglioramento delle prestazioni anche per altre distribuzioni. Il supporto tradizionale per PHP è fornito dal pacchetto @libapache2-mod_php@, mentre quello il semplice fatto che tutto ciò consente di FPM dal pacchetto @php-fpm@. Si tratterà di poter passare dall'uno all'altro e di riconfigurare Apache per passare dall'MPM prefork all'MPM event, che fornisce una lunga serie di vantaggi, come la possibilità di e poter abilitare il supporto per http2. 

 Il primo passo Qualora si sia ereditato una configurazione di Apache per eseguire PHP con FPM consiste semplicemente nell'installare classica, basata sui tradizionali moduli di esecuzione diretta del codice PHP all'interno di Apache, si potranno seguire le seguenti istruzioni per il passaggio all'esecuzione come fast CGI, che, almeno su Debian Buster, è tutto sommato molto semplice. 

 Anzitutto si installi il pacchetto @php-fpm@ php-fpm con @apt 

 <pre> 
 apt install php-fpm@, che installerà php-fpm 
 </pre> 

 questo lancerà il programma servizio @php7.4-fpm@ per l'esecuzione del codice php creerà la versione specifica di PHP in uso nella propria distribuzione:    ad esempio su Debian 12, la attuale @stabile@, verrà messo in esecuzione il servizio @php8.2-fpm@; tutte directory @/etc/php/7.4/fpm/@ con le nuove configurazioni che si applicano a questo servizio verranno collocate 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). Inoltre viene usata una ulteriore sottodirectory per poter configurare separatamente le diverse modalità con cui si eseguono dei programmi: @apache@ per quelli eseguiti con @mod_php@, @cli@ per l'esecuzione a riga di comando, ed appunto @fpm@ per l'esecuzione con FPM. servizio. 

 Pertanto, se si sta usando la modalità tradizionale di @mod_php@ sarà necessario replicare la configurazione per @php-fpm@; allora, se Se, come è sempre opportuno fare per mantenere pulita la configurazione, si sono aggiunte le modifiche ai parametri di PHP non su @php.ini@ ma con un file ad hoc in @/etc/php/8.2/apache/conf.d@ @/etc/php/7.4/apache/conf.d@ (ad esempio @99-local.ini@), evitando modifiche ai default di @php.ini@, @99-local.ini@) tutto quello che sarà necessario fare è:  

 <pre> 
 cp -a /etc/php/8.2/apache2/conf.d/99-local.ini /etc/php/8.2/fpm/conf.d/ /etc/php/7.4/apache2/conf.d/99-local.ini /etc/php/7.4/fpm/conf.d/ 
 </pre> 

 altrimenti si dovranno trovare le modifiche effettuate e riapplicarle (e potrebbe essere l'occasione per metterle da sole nel file indicato). Si esegua: 

 <pre> 
 systemctl restart php8.2-fpm.service php7.4-fpm.service 
 </pre> 

 per fare prendere le modifiche ai parametri. 

 A questo punto per effettuare il passaggio si dovrà 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, si fa semplicemente con: 

 <pre> 
 apt-get remove --purge libapache2-mod-php7.4 
 a2dismod mpm_prefork 
 a2enmod mpm_event 
 a2enmod proxy_fcgi setenvif    http2 
 a2enconf php7.4-fpm 
 systemctl restart apache2 
 </pre> 

 e non c'è bisogno di toccare nulla nella configurazione dei virtual host. 

 Si potrà verificare l'uso di HTTP2 andando su una pagina qualunque, attivando gli strumenti di sviluppo web di firefox (o gli analoghi di altro browser), ricaricando la pagina che le richieste e le risposte utilizzano la versione HTTP/2 del protocollo.