Ottimizzare Apache per WordPress

WordPress è una delle applicazioni più utilizzate online, se si passa da un hosting condiviso a un VPS, risulta importante ottimizzare Apache per ottenere prestazioni migliori con WordPress.

In questa breve guida vediamo come configurare Apache su un VPS con risorse limitate in modo da migliorare le prestazioni di WordPress.

Moduli
Il primo elemento da considerare è il numero di moduli attivi, nella configurazione di default di Apache sono presenti infatti molti moduli che non risultano necessari e che causano un maggiore consumo di risorse.
Risulta importante quindi disabilitare i moduli di Apache non utilizzati, per fare questo basta aprire il file di configurazione httpd.conf e inserire il simbolo # all’inizio della riga LoadModule in cui viene caricato il modulo che si vuole disabilitare.

#LoadModule auth_basic_module modules/mod_auth_basic.so

In un sito basato su WordPress generalmente basta che siano abilitati i seguenti moduli.
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule expires_module modules/mod_expires.so
LoadModule deflate_module modules/mod_deflate.so
LoadModule headers_module modules/mod_headers.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule mime_module modules/mod_mime.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule dir_module modules/mod_dir.so
LoadModule alias_module modules/mod_alias.so
LoadModule rewrite_module modules/mod_rewrite.so

In questo casosi  è quindi anche commentata la riga
#LoadModule negotiation_module modules/mod_negotiation.so
Il modulo negotiation_module viene utilizzato pagine multilingua, se si disabilita questo modulo, è necessario eseguire delle operazioni aggiuntive.
Bisogna infatti commentare anche le seguenti righe presenti nel file httpd.conf
#LanguagePriority en ca cs da de el eo es et fr he hr it ja ko ltz nl nn no pl pt pt-BR ru sv zh-CN zh-TW
#ForceLanguagePriority Prefer Fallback

Prima di disabilitare i moduli è sempre consigliabile fare un backup del file di configurazione per poterlo ripristinare in caso di necessità, è infatti possibile che alcuni plugin di WordPress richiedano moduli che sono stati disattivati.

MPM Prefork
Il modulo MPM Prefork gestisce il numero di processi avviati da Apache, su un VPS con risorse limitata risulta importante configurare in modo corretto il modulo per migliorare le prestazioni del server.

Nel file httpd.con sono presenti le seguenti righe.
<IfModule prefork.c>
StartServers       8
MinSpareServers    5
MaxSpareServers   20
ServerLimit      256
MaxClients       256
MaxRequestsPerChild  4000
</IfModule>

MinSpareServers e MaxSpareServers specificano il numero minimo e il numero massimo di processi in attesa di richieste che il server può eseguire mentre StartServers indica il numero di processi avviati di default.
MaxClient specifica il numero massimo di richieste che possono essere gestite dal server, si tratta di un parametro molto importante.
Se si ha un aumento improvviso del traffico e MaxClients ha un valore troppo elevato, viene consumata tutta la memoria con il conseguente rischio di blocco di Apache.
Per calcolare il valore da assegnare a MaxClients, bisogna dividere il totale della memoria disponibile del server per la quantità di memoria consumata da un processo di Apache.
Se sul server sono disponibili 500mb di Ram per Apache e ogni processo consuma 10mb, il valore da impostare è 50.

I valori per il modulo MPM Prefork devono quindi essere modificati in base alle risorse disponibili sul proprio server.
<IfModule prefork.c>
StartServers       3
MinSpareServers    3
MaxSpareServers   10
ServerLimit      50
MaxClients       50
MaxRequestsPerChild  2000
</IfModule>

Ottimizzare KeepAlive
KeepAlive permette ai visitatori di utilizzare la stessa connessione TCP per inviare richieste multiple, questo dovrebbe permettere di ridurre la latenza per i documenti HTML con molte immagini.
Bisogna però considerare che Apache utilizza un processo per ogni richiesta, abilitando KeepAplive un processo rimane attivo per quindici secondi di default, questo anche non è più utilizzato, la conseguenza è che vengono utilizzate molte risorse di sistema.
Generalmente su un VPS con risorse limitate, è consigliabile disabilitare KeepAlive nel file di configurazione httpd.conf
KeepAlive Off

Se si ha un sito con molte immagini, può risultare utile avere KeepAlive attivato.
In questo caso è però importante cambiare il valore KeepAliveTimeout che stabilisce per quanti secondi devono rimanere aperte le connessioni.
KeepAliveTimeout 2

Timeout
Un ultimo parametro che è possibile modificare per ottimizzare Apache per WordPress, è Timeout.
Questo parametro stabilisce il numero di secondi per cui Apache deve aspettare quando riceve una richiesta e la elabora.
Il vaore di default è 120 e può essere abbassato.
Timeout 40

Modificando il file di configurazione httpd.conf risulta quindi possibile ottimizzare Apache per WordPress.