Molti utilizzano apache2 come server web. Tuttavia, pochi si fermano a riflettere sull'ottimizzazione delle sue prestazioni, che influisce direttamente sulla velocità di caricamento delle pagine del sito, sulla velocità di esecuzione degli script (in particolare php), nonché sull'aumento del carico della CPU e sull'incremento della memoria RAM utilizzata.
Pertanto, il seguente manuale dovrebbe aiutare i principianti (e non solo) utenti.
Tutti gli esempi seguenti sono stati utilizzati su Raspberry PI 3, Debian 9, Apache 2.4.38, PHP 7.3.
Quindi, iniziamo.
1. Disabilitare i moduli non utilizzati
Il primo metodo consiste nel semplicemente disabilitare i moduli che non si utilizzano:
L'elenco dei moduli attualmente utilizzati può essere visualizzato con il comando:
apache2ctl -MPer disabilitare un modulo si utilizza il comando:
a2dismod *nome del modulo*Di conseguenza, per abilitare un modulo si utilizza il comando:
a2enmod *nome del modulo*Si prega di notare che quando si utilizza a2dismod, il nome del modulo deve essere scritto senza la parola modulo stessa.
Ad esempio, se nel risultato del comando apache2ctl -M hai visto proxy_module, per disabilitarlo è necessario utilizzare il comando — a2dismod proxy
I moduli che caricano maggiormente il sistema (dalla mia esperienza personale) sono:
- PHP, Ruby, Perl e altri moduli per vari linguaggi di scripting
- SSL
- Rewrite
- CGI
Quindi, nei casi in cui questi moduli non ti servano, consiglio di disabilitarli.
Inoltre, dopo aver disabilitato un modulo, consiglio di usare il comando — apache2ctl configtest, che verifica la configurazione dei siti utilizzati e, se uno dei moduli disabilitati era necessario per essi, restituirà un errore.
2. Cambiare MPM (Multi-Processing Module) e utilizzare php-fpm
Di default, dopo l'installazione, apache2 utilizza MPM Prefork (1 thread per 1 connessione), che riduce significativamente le prestazioni, ma migliora la stabilità e la sicurezza.
Ma per ottimizzare le prestazioni consiglio di utilizzare MPM Worker, che consente di utilizzare più thread per una singola connessione.
Per abilitarlo utilizziamo i seguenti comandi:
a2dismod mpm_prefork //Disabilitiamo prefork
a2dismod php7.3 //Disabilitiamo il modulo php che dipende da prefork
a2enmod mpm_worker //Abilitiamo worker
Tuttavia, utilizzando Worker potresti incontrare un problema, poiché il modulo php7.3 dipende dal modulo Prefork.
Per risolvere questo problema, installeremo il modulo php7.3-fpm, che verrà utilizzato per l'elaborazione degli script PHP:
apt-get update && apt-get install php7.3-fpm // Installiamo
systemctl enable php7.3-fpm && systemctl start php7.3-fpm // Aggiungiamo all'avvio automatico e avviamo
a2enmod php7.3-fpm && a2enconf php7.3-fpm.conf // Abilitiamo il modulo e la sua configurazione
È importante notare che l'uso di php-fpm ridurrà anche la quantità di RAM utilizzata dal processo apache2 e accelererà leggermente l'elaborazione degli script PHP.
3. Conclusione
In questo modo, tramite queste semplici azioni, siamo riusciti a ottimizzare le prestazioni e ridurre il carico sulla macchina (nel nostro caso RPI3).
Naturalmente, ci sono centinaia di altre opzioni di ottimizzazione, come l'abilitazione della compressione (che è davvero utile, ma per la maggior parte già attivata di default), la modifica dei parametri (file di configurazione) MPM, la disattivazione di HostnameLookups, ecc., ma in questo articolo ho cercato di riflettere proprio quegli aspetti che mi hanno aiutato di più, e spero possano aiutare altri.
Fonte: habr.com
