Molti utilizzano apache2 come server web. Tuttavia, pochi si preoccupano di ottimizzarne le prestazioni, il che influisce direttamente sulla velocità di caricamento delle pagine del sito, sulla velocità di elaborazione degli script (in particolare php), nonché sull'aumento del carico della CPU e sull'incremento della RAM utilizzata.
Pertanto, il seguente manuale dovrebbe aiutare gli utenti principianti (e non solo).
Tutti gli esempi seguenti sono stati utilizzati su Raspberry PI 3, Debian 9, Apache 2.4.38, PHP 7.3.
Iniziamo.
1. Disabilitazione dei moduli non utilizzati
Il primo metodo consiste nel semplice atto di 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 attivare un modulo, si utilizza il comando:
a2enmod *nome del modulo*Si noti 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 maggiormente sovraccaricano il sistema (per 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 siano necessari, consiglio di disattivarli.
Inoltre, dopo aver disattivato un modulo, consiglio di utilizzare il comando — apache2ctl configtest, che verificherà la configurazione dei siti utilizzati e, se uno dei moduli disattivati risulta necessario, restituirà un errore.
2. Cambiare MPM (Multi-Processing Module) e utilizzare php-fpm
Per impostazione predefinita, dopo l'installazione, apache2 utilizza MPM Prefork (1 thread per connessione), che riduce notevolmente le prestazioni, ma migliora stabilità e sicurezza.
Tuttavia, per ottimizzare le prestazioni, consiglio di utilizzare MPM Worker, che consente di utilizzare più thread per una singola connessione.
Per attivarlo, utilizziamo i seguenti comandi:
a2dismod mpm_prefork //Disattiviamo prefork
a2dismod php7.3 //Disattiviamo il modulo php che dipende da prefork
a2enmod mpm_worker //Attiviamo 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'esecuzione 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
Va notato che l'uso di php-fpm ridurrà anche la quantità di RAM utilizzata dal processo apache2 e migliorerà leggermente l'esecuzione degli script php.
3. Conclusione
In questo modo, con queste semplici azioni, siamo riusciti a ottimizzare le prestazioni e ridurre il carico sulla macchina (in questo caso RPI3).
Certo, ci sono centinaia di altre possibilità di ottimizzazione, come abilitare la compressione (che è davvero utile, ma in gran parte già abilitata per impostazione predefinita), modificare i parametri (file di configurazione) MPM, disabilitare HostnameLookups, ecc., ma in questo articolo ho cercato di evidenziare precisamente i punti che mi hanno aiutato di più e spero possano aiutare anche altri.
Fonte: habr.com
