|
|
Riga 1: |
Riga 1: |
| ==Introduzione== | | ==Introduzione== |
| | | Apt-cdrom permette di automatizzare l'aggiunta e l'aggiornamento dei repository presenti su Cd-Rom. |
| Questo howto nasce dopo due giornate passate a navigare alla ricerca di un metodo per ridurre la banda in uscita del server web Apache, a livello di server e/o a livello di virtual host.
| |
| | |
| Problemi con il modulo a parte, che hanno dilatato moltissimo i tempi necessari per avere una soluzione funzionante, questa soluzione risulta essere molto facile, ed a sua volta anche molto potente e versatile.
| |
| | |
|
| |
|
| ==Installazione== | | ==Installazione== |
| | L'installazione non necessaria, in quanto contenuto nel pacchetto base di apt. |
|
| |
|
| Il modulo '''mod_bandwidth''' � installato di default insieme al server apache; lo possiamo trovare in '''/usr/lib/apache/1.3/'''.
| | ==Opzioni disponibili== |
| Se questo modulo dovesse dare problemi (esempi: non imposta correttamente la banda, ma sembra che i limiti che impostiamo siano visti come bit e non come byte, non accetta la direttiva MaxConnection), vi consiglio di reinstallarlo come descritto qui sotto.
| | L'utilizzo del comando � semplicissima: permette due sole azioni:<br/> |
| | | ; add : per l'aggiunta di un cd/dvd alla lista di quelli disponibili<br/> |
| * rechiamoci sul sito del produttore: http://www.cohprog.com/mod_bandwidth.html e scarichiamo l'ultima versione (link diretto:
| | ; ident ; per identificare il cd/dvd inserito<br/> |
| ftp://ftp.cohprog.com/pub/apache/module/1.3.0/mod_bandwidth.c).<br/>
| |
| * per potre compilare questo modulo, abbiamo bisogno del pacchetto '''apache-dev'''. Per installarlo � sufficiente dare:
| |
| <pre>
| |
| # apt-get install apache-dev
| |
| </pre>
| |
| * ora siamo pronti per compilare:
| |
| <pre>
| |
| $ /usr/bin/apxs -c mod_bandwidth.c -o mod_bandwidth.so
| |
| </pre>
| |
| * una volta pronto il modulo, eseguiamo i seguenti comandi:
| |
| <pre>
| |
| # cd /usr/lib/apache/1.3/
| |
| # mv mod_bandwidth.so mod_bandwidth.so.bk
| |
| # mv /home/maxer/mod_bandwidth.so ./
| |
| </pre>
| |
| | |
| in questo modo abbiamo creato una copia del modulo precedente, se presente, e poi abbiamo spostato il modulo appena compilato nella cartella dei moduli di apache.
| |
| | |
| | |
| ===Aggiornamento===
| |
| | |
| Il procedimento appena presentato, crea diversi problemi, soprattutto in fase di aggiornamento del sistema: ogni volta il pacchetto
| |
| apache viene aggiornato, infatti, il modulo appena creato verr� sovrascritto con quello `vecchio`, e apache non si riavvier�...
| |
| Una alternativa � creare il modulo con un altro nome:
| |
| <pre>
| |
| $ /usr/bin/apxs -c mod_bandwidth.c -o mod_bandwidth_new.so
| |
| # cp mod_bandwidth_new.so /usr/lib/apache/1.3/mod_bandwidth_new.so
| |
| # cd /usr/lib/apache/1.3/
| |
| # cp 500mod_bandwidth.info 500mod_bandwidth_new.info
| |
| </pre>
| |
| | |
| Ora bisogna modificare il file '''500mod_bandwidth_new''' modificando il nome del
| |
| vecchio modulo con quello nuovo:
| |
| <pre>
| |
| LoadModule: bandwidth_module /usr/lib/apache/1.3/mod_bandwidth-new.so
| |
| Description: Bandwidth management on a per-connection basis
| |
| </pre>
| |
| | |
| Ora � necessario modificare il file '''/etc/apache/modules.conf''': la nuova direttiva da inserire, sostituendo eventualmente quella preesistente, � la seguente:
| |
| <pre>
| |
| LoadModule bandwidth_module /usr/lib/apache/1.3/mod_bandwidth_new.so
| |
| </pre>
| |
| | |
| ==Configurazione==
| |
| | |
| Ora configuriamo apache per utilizzare mod_bandwidth.<br/>
| |
| Aggiungiamo il modulo al file '''/etc/apache/modules.conf'''. Per fare questo abbiamo due possibilit�:
| |
| * modificare a mano il file, aggiungendo la seguente riga, alla finedel file:
| |
| <pre>
| |
| LoadModule bandwidth_module /usr/lib/apache/1.3/mod_bandwidth.so
| |
| </pre>
| |
| *utilizzare modules-config:
| |
| <pre>
| |
| modules-config apache enable mod_bandwidth
| |
| </pre>
| |
| | |
| Creiamo le cartelle temporanee per mod_bandwidth:
| |
| <pre>
| |
| # mkdir /tmp/apachebw
| |
| # mkdir /tmp/apachebw/master
| |
| # mkdir /tmp/apachebw/link
| |
| # chown -R www-data:www-data /tmp/apachebw
| |
| # chmod -R 775 /tmp/apachebw
| |
| </pre>
| |
| (ricordiamoci che � possibile che qualche script ripulica la directory '''/tmp''', quindi cambiamo la posizione di queste cartelle con la direttiva BandWidthDataDir).
| |
| | |
| Ecco fatto, ora con il seguente comando facciamo rileggere ad apache i file di configurazione:
| |
| <pre>
| |
| # /etc/init.d/apache reload
| |
| </pre>
| |
| | |
| | |
| Bene, ora possiamo analizzare i parametri che di mette a disposizione mod_bandwidth.
| |
| | |
| (Le descrizioni di seguito sono la traduzione libera + approfondimenti del manuale reperibile sul sito del traduttore)
| |
| | |
| | |
| ===Direttive globali di configurazione===
| |
| | |
| ===='''BandWidthDataDir'''====
| |
| '''Sintassi''': BandWidthDataDir <directory><br/>
| |
| '''Default''': "/tmp/apachebw"<br/>
| |
| '''Contesto''': server config<br/>
| |
| Imposta la directory in cui mod_bandwidth conserve i suoi file temporanei. All'interno di questa directory devono essere presenti anche le directory link e master; tutte queste cartelle devono essere scrivibili da apache (che in debian utilizza l'utente ed il gruppo www-data)
| |
| | |
| | |
| ===='''BandWidthModule'''====
| |
| '''Sintassi''': BandWidthModule <On|Off><br/>
| |
| '''Default''': Off<br/>
| |
| '''Contesto''': per server config<br/>
| |
| Abilita o disabilita il modulo.
| |
| | |
| '''NOTA:''' Per utilizzarlo all'interno di un virtual host, � necessario inserire la direttiva '''BandWidthModule On''' all'interno del blocco del virtual host. Se viene attivato globalmente (cio� all'interno del file httpd.conf, fuori da ogni blocco), il modulo � attivo automaticamente in tutti i sottoblocci (Virtual Host, etc..)
| |
|
| |
|
| | Il fatto che ci sia l'opzione '''ident''' fa capire che presente un sistema di indentificazione: dopo la scansione del supporto, quando sar necessario recuperare un pacchetto, verr richiesto il cd/dvd chiamandolo per 'nome'. |
|
| |
|
| ===='''BandWidthPulse'''====
| | Le opzioni disponibili, invece, sono:<br/> |
| '''Sintassi''': BandWidthPulse <microseconds><br/>
| | ; -d : Permette di indicare un mount-point alternativo<br/> |
| '''Default''':<br/>
| | ; -r : Consente di rinominare il cd/dvd da analizzare<br/> |
| '''Contesto''': per server config<br/>
| | ; -m : Non esegue il mount (nel caso sia gi� montato)<br/> |
|
| |
|
| Modifica l'algoritmo usato per calcolare la larghezza di banda e per trasmettere i dati. Nella modalit� normale (obsoleta), il modulo cerca di tramettere i dati in pacchetti di 1Kb. Questo vuol dire che, se la banda disponibile � di 512B, il modulo trasmette 1Kb, aspetta 2 secondi, trasmette 1Kb e cos� via... Impostando questa direttiva, verr� cambiato l'algoritmo in modo che il server
| | Degna di nota � la gestione totalmente automatizzata del processo di mount e umount del dispositivo: quando verr� richiesto un pacchetto, infatti, il cassetto del lettore verr� aperto automaticamente, e tutte le operazioni di mount e umount eseguite autonomamente. |
| aspetter� sempre lo stesso lasso di tempo, prima di trasmettere pacchetti, e la dimensione dei pacchetti varier� di conseguenza, cos� da rispettari i criteri indicati nelle altre direttive. Il valore � in microsecondi.
| |
|
| |
|
| '''Esempio:'''
| | ==Esempi== |
| | Una breve rassegna di esempi, per prendere familiarit� con questo strumento:<br/> |
| | comando semplice per aggiungere il supporto correntemente inserito nel primo cd all'archivio |
| <pre> | | <pre> |
| BandWidthPulse 1000000 #1 secondo
| | # apt-cdrom add |
| </pre> | | </pre> |
| Se oltre a questa direttiva presente un limite a 512B, il server trasmetter 512B, aspetter un secondo, trametter 512B, aspetter un secondo e cos via.
| |
|
| |
|
| |
| ===Direttive per la configurazione di Directory e/o VirtualServer===
| |
|
| |
| ===='''BandWidth'''====
| |
| '''Sintassi''': BandWidth <domain|ip|all> <rate><br/>
| |
| '''Default''': none<br/>
| |
| '''Contesto''': per directory, .htaccess<br/>
| |
|
| |
|
| Limita la banda per i file contenuti nella directory e nelle sub-directory, in base alla provenienza (dominio, ip, all).
| |
| Gli indirizzi IP possono essere specificati anche nel formato network/netmask (Es: 192.168.0.0/21) '''<rate>''' deve essere espresso in Byte/secondo. Impostato a "0" indica nessun limite di banda. Possono essere impostati pi limiti per la stessa directory; in questo caso,
| |
| importante l'ordine con cui vengono inserite le direttive, in quando mod_bandwidth li scorre dal primo all'ultimo, fermandosi a quello che
| |
| rispecchia la situazione
| |
|
| |
|
| '''Esempio:'''
| | per sapere come viene identificato il supporto correntemente inserito |
| <pre> | | <pre> |
| BandWidth ecp.fr 0
| | # apt-cdrom ident |
| BandWidth 138.195 0
| | </pre> |
| BandWidth all 1024
| |
| </pre> | |
| In questo esempio, viene limitata la banda a:
| |
| * nessun limite per gli appartenenti al dominio .ecp.fr e alla rete 138.195. ;
| |
| * 1024Bytes/secondo per tutti gli altri.
| |
| | |
| | |
| ===='''LargeFileLimit'''====
| |
| '''Sintassi''': LargeFileLimit <filesize> <rate><br/>
| |
| '''Default''': none<br/>
| |
| '''Contesto''': per directory, .htaccess<br/>
| |
|
| |
|
| Imposta un limite '''<rate>''' da usare quando si trasferiscono file di dimensioni uguali o maggiori a <filesize>
| |
| E' possibile utilizzare pi direttive per diverse dimensioni; anche in questo caso, se il parametro viene impostato a "0", non sar impostato alcun limite (rimarr, ovviamente, l'eventuale limite impostato in BandWidth). Se viene impostato a "-1", invece, saranno aboliti tutti i limiti (anche quelli impostati con la direttiva BandWidth) per i file la cui dimensione rispecchia quella direttiva.
| |
|
| |
|
| '''Esempio:''' | | permette di aggiungere all'archivio il dvd accessibile tramite il mount point /media/dvd |
| <pre> | | <pre> |
| LargeFileLimit 200 3072
| | # apt-cdrom -d /media/dvd add |
| LargeFileLimit 1024 2048
| |
| </pre> | | </pre> |
| Queste direttive portano a questa situazione:
| |
| * i file pi piccoli di 200Kb, non verranno limitati da queste direttive (rimane attiva la direttiva BandWidth);
| |
| * i file di dimensione compresa tra 200Kb e 1023Kb, saranno limitati a 3072Kb/sec;
| |
| * i file di dimensione maggiore di 1024Kb, saranno limitati a 2048Kb/sec.
| |
|
| |
|
| |
| ===='''MaxConnection'''====
| |
| '''Sintassi''': MaxConnection <connections><br/>
| |
| '''Default''': 0 (illimitate)<br/>
| |
| '''Contesto''': per directory, .htaccess<br/>
| |
|
| |
| Imposta il numero di connessioni massime che possono avvenire contemporaneamente.Una volta raggiunto il limite impostato, le nuove connessioni verranno rifiutate. Se impostato a "0" (valore di default) non saranno presenti delle limitazioni per quanto riguarda il numero di connessioni simultanee (se non quello impostato nelle direttive principali di Apache).
| |
|
| |
|
| |
| ===='''MinBandWidth'''====
| |
| '''Sintassi''': MinBandWidth <domain|ip|all> <rate><br/>
| |
| '''Default''': all 256<br/>
| |
| '''Contesto''': per directory, .htaccess<br/>
| |
|
| |
|
| Imposta una banda minima per il trasferimento dei dati. Questa direttiva pu sovrascrivere le direttive BandWidth e LargeFileLimit, in quanto, in presenza di un numero elevato di connessioni, verr garantita a tutte la larghezza indicata con questa direttiva, anche se il totale superer i limiti. Il primo argomnto da usarsi come per la direttiva BandWidth. deve essere espresso in Byte/Secondo; se viene impostato a 0, verr usato il valore di default (256).
| |
|
| |
|
| '''Esempio :''' | | come nell'esempio precedente, specificando il nome del supporto: Sarge DVD n1 2005-05-24 |
| <pre> | | <pre> |
| BandWidth all 3072
| | # apt-cdrom -d /media/dvd -r "Sarge DVD n1 2005-05-24" add |
| MinBandWidth all 1024
| |
| </pre> | | </pre> |
|
| |
| Assumendo la presenza delle precedenti direttive analizziamo i casi in base
| |
| alle connessioni:
| |
| * una connessione: velocit di trasferimento = 3072 Bytes/sec.
| |
| * due connessioni: velocit di trasferimento = 1536 Bytes/sec.
| |
| * tre o pi connessioni: velocit di trasferimento = 1024 Bytes/sec.
| |
|
| |
| Se MinBandWidth impostato a "-1" accade che:
| |
| * se c' solo una connessione, il file viene trasferito a 3072 Bytes/sec.
| |
| * se ci sono una o pi connessioni, ogni file viene trasferito a 3072 Bytes/sec. La velocit non dipende pi dal numero di connessioni, ma solo dai valori delle direttive.
| |
|
| |
| Ovviamente, la velocit di trasferimento totale non potr mai superare la vostra larghezza di banda...
| |
|
| |
| {{Box|NOTA:|Se ad una richiesta devono essere applicati sia un limite impostato nella direttiva "BandWidth" sia uno impostato nella direttiva "LargeFileLimit", verr applicato il pi piccolo (ma mai minore a quello eventialmente indicato nella direttiva "MinBandWidth")}}
| |
|
| |
| ==Eseguiamo Apache con mod_bandwidth==
| |
|
| |
| Per ottenere risultati, importante che non ci siano dei link morti nella directory '''link''' di mod_bandwidth, quando viene eseguito avviato il server con il modulo attivo.
| |
|
| |
| Potrebbe essere una buona idea, a questo scopo, eseguire lo script '''cleanlink.pl''', che provvede a rimuovere automaticamente i link morti.
| |
|
| |
|
| |
| ==Conclusione==
| |
|
| |
| Con questo modulo possibile, in breve tempo e con la massima semplicit,
| |
| ottimizzare la ripartizione della banda del proprio server web. Cosa
| |
| fondamentale per non arrivare alla saturazione della banda, cosa che
| |
| comporterebbe lentezza nelle risposte dei vari servizi e della navigazione su
| |
| internet.
| |
|
| |
|
|
| |
|
| ---- [[User:MaXeR|MaXeR]] | | ---- [[User:MaXeR|MaXeR]] |