Ottimizzare la banda di Apache
Attenzione. Questa guida è da considerarsi abbandonata, per via del tempo trascorso dall'ultima verifica.
Potrà essere resa obsoleta, previa segnalazione sul forum, se nessuno si propone per l'adozione. |
Versioni Compatibili Debian 6 "squeeze" Debian 7 "wheezy" |
Il modulo mod_deflate
Nell'installazione Apache di default di Debian è presente l'utile modulo mod_deflate: attivando questo modulo sarà possibile comprimere i dati trasferiti dal vostro sito al browser web del visitatore, velocizzando così l’apertura delle pagine web ed utilizzando minor banda di connessione.
Installazione
È possibile abilitare mod_deflate con questo comando:
# a2enmod deflate
Configurazione
ATTENZIONE Debian Stretch contiene già di default le configurazioni seguenti, per cui NON occorre applicare quanto descritto in questo paragrafo. |
Fino a Debian Jessie
Per ottimizzarne la configurazione, creiamo un file .conf apposito:
# nano /etc/apache2/conf.d/mod_deflate
avente come contenuto:
# Configurazione Mod Deflate ############################# <IfModule mod_deflate.c> # Definisco il livello di compressione # Valori da 1 (min) a 9 (max) DeflateCompressionLevel 3 </IfModule> <Location /> # Definisco quali pagine vanno compresse AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/xml AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE image/svg+xml AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE application/rss+xml AddOutputFilterByType DEFLATE application/atom_xml AddOutputFilterByType DEFLATE application/x-javascript AddOutputFilterByType DEFLATE application/x-httpd-php AddOutputFilterByType DEFLATE application/x-httpd-fastphp AddOutputFilterByType DEFLATE application/x-httpd-eruby # Attivo la compressione SetOutputFilter DEFLATE # Non comprimo il file che hanno una loro compressione # di default SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary SetEnvIfNoCase Request_URI \.(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary SetEnvIfNoCase Request_URI \.pdf$ no-gzip dont-vary SetEnvIfNoCase Request_URI \.avi$ no-gzip dont-vary SetEnvIfNoCase Request_URI \.mov$ no-gzip dont-vary SetEnvIfNoCase Request_URI \.mp3$ no-gzip dont-vary SetEnvIfNoCase Request_URI \.mp4$ no-gzip dont-vary SetEnvIfNoCase Request_URI \.rm$ no-gzip dont-vary # Impedisco errori di compressione nelle vecchie # versioni dei browser BrowserMatch ^Mozilla/4 gzip-only-text/html BrowserMatch ^Mozilla/4\.0[678] no-gzip BrowserMatch \bMSIE !no-gzip !gzip-only-text/html BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html # Make sure proxies don't deliver the wrong content Header append Vary User-Agent env=!dont-vary # Attivo i log per controllare il corretto # funzionamento del modulo DeflateFilterNote Input input_info DeflateFilterNote Output output_info DeflateFilterNote Ratio ratio_info LogFormat '"%r" %{output_info}n/%{input_info}n (%{ratio_info}n%%)' deflate CustomLog /var/log/apache2/deflate_log deflate </Location>
Ora è sufficiente riavviare Apache:
# /etc/init.d/apache2 restart
per fargli digerire le modifiche.
Ogni file richiesto dai visitatori verrà registrato all'interno del file di log precedentemente creato. Una tipica riga di log è la seguente:
"GET /info.php HTTP/1.1" 7621/45430 (16%)
da cui possiamo vedere che il visitatore ha richiesto il file info.php e che Apache lo ha inviato con una compressione del 16%.
Poiché questo file di log tenderà a diventare enorme, il mio consiglio è di tenere attiva la registrazione dei log per il solo periodo necessario al debug del modulo. Una volta verificato il corretto funzionamento di Apache sarà possibile disabilitare la registrazione dei log semplicemente commentando le righe relative nel file di configurazione di mod_deflate.
Il modulo mod_expires
Ora che i browser dei nostri utenti scaricano utilizzando la compressione da noi impostata, possiamo anche fare in modo che non richiedano al nostro server dei files inutili che già hanno nella loro cache locale.
Per fare questo utilizziamo il modulo mod_expires che è già presente in un'installazione di default di Apache in Debian:
# a2enmod expires Module expires already enabled
Noi ci limiteremo quindi a ottimizzarne la configurazione, agendo sul file:
# nano /etc/apache2/conf.d/mod_expires
e facendo in modo che contenga:
<IfModule mod_expires.c> ExpiresActive on ExpiresByType application/javascript "access plus 1 months" ExpiresByType image/jpg "access plus 1 month" ExpiresByType image/jpeg "access plus 1 month" ExpiresByType image/gif "access plus 1 month" ExpiresByType image/png "access plus 1 month" ExpiresByType text/css "access plus 1 months" </IfModule>
Riavviamo Apache:
# /etc/init.d/apache2 restart
e il gioco è fatto.
I moduli mod_status e mod_info
mod_status è un utile modulo che fornisce informazioni sullo stato, sulle performances e sulle attività di un server Apache. Il modulo è già installato di default in Debian e occorre perciò solo abilitarlo.
# a2enmod status # a2enmod info
Creiamo un file di configurazione per il modulo mod_status:
# nano /etc/apache2/conf.d/mod_status.conf
contenente:
<Location /server-status> SetHandler server-status Order deny,allow Deny from all Allow from 192.168.0.0/24 </Location>
Dove ovviamente al posto della classe 192.168.0.0/24 dovremo indicare la classe di indirizzi della nostra LAN.
Creiamo un file di configurazione per il modulo mod_info:
# nano /etc/apache2/conf.d/mod_info.conf
contenente:
<Location /server-info> SetHandler server-info Order deny,allow Deny from all Allow from 192.168.0.0/24 </Location>
Dove ovviamente al posto della classe 192.168.0.0/24 dovremo indicare la classe di indirizzi della nostra LAN.
A questo punto riavviamo Apache:
# /etc/init.d/apache2 restart
e verifichiamo che il modulo sia in funzione, collegandoci all'indirizzo:
oppure
Strumenti per il monitoraggio del traffico di rete
iftop
iftop è uno strumento da linea di comando che produce una lista in real-time delle connessioni di rete attive. Di default le connessioni sono presentate in ordine di consumo di banda. Per installare il tool è sufficiente:
# apt-get install iftop
Per avviare il programma è sufficiente invocarlo, specificando come parametro l'interfaccia di rete che si vuole monitorare:
# iftop -i eth0 -B
Alcune altre utili opzioni:
-h display this message -n don't do hostname lookups -N don't convert port numbers to services -p run in promiscuous mode (show traffic between other hosts on the same network segment) -b don't display a bar graph of traffic -B Display bandwidth in bytes -i interface listen on named interface -f filter code use filter code to select packets to count (default: none, but only IP packets are counted) -F net/mask show traffic flows in/out of network -P show ports as well as hosts -m limit sets the upper limit for the bandwidth scale -c config file specifies an alternative configuration file
Apachetop
È uno strumento che mostra informazioni come le richieste per secondo, i bytes per secondo e gli URL più richiesti. Per installarlo:
# apt-get install apachetop
Per avviarlo basta il comando:
# apachetop
slurm
Slurm è un monitor del carico di rete; può mostrare in realtime le statistiche sul traffico, può monitorare ogni interfaccia di rete e utilizza una gradevole ascii-art per mostrare i propri grafici. Per installarlo:
# apt-get install slurm
Per utilizzarlo:
# slurm [-hHz] [-csl] [-d delay] [-t theme] -i interface
Ad esempio:
# slurm -i eth0
Darkstat
Darkstat è un semplice strumento di monitoraggio della banda basato su un'interfaccia web. Per installarlo:
# apt-get install darkstat
Per visualizzare le statistiche e i grafici è sufficiente collegarsi all'indirizzo:
http://indirizzo.ip.del.server:667
Guida scritta da: Ferdybassi 12:20, 6 mar 2011 (CET) | Debianized 20% |
Estesa da: | |
Verificata da: | |
Verificare ed estendere la guida | Cos'è una guida Debianized |