3 581
contributi
Nessun oggetto della modifica |
m (da adottare) |
||
(11 versioni intermedie di 4 utenti non mostrate) | |||
Riga 1: | Riga 1: | ||
=Introduzione= | {{Guida da adottare}} | ||
== Introduzione == | |||
Questo articolo affronta il problema della gestione della banda in Apache (Ver. 1 e Ver. 2), mostrando come installare e configurare tre diversi moduli utilizzabili a tale fine: | Questo articolo affronta il problema della gestione della banda in Apache (Ver. 1 e Ver. 2), mostrando come installare e configurare tre diversi moduli utilizzabili a tale fine: | ||
==mod_bandwidth== | === mod_bandwidth === | ||
* HomePage: http://www.cohprog.com/mod_bandwidth.html | * HomePage: http://www.cohprog.com/mod_bandwidth.html | ||
* Licenza: Apache Group licence | * Licenza: Apache Group licence | ||
* Copyright: Yann Stettler and CohProg SàRL | * Copyright: Yann Stettler and CohProg SàRL | ||
* Versione Apache: 1 | * Versione Apache: 1 | ||
==bw_mod== | === bw_mod === | ||
* HomePage: http://www.ivn.cl/apache/ | * HomePage: http://www.ivn.cl/apache/ | ||
* Licenza: Apache 2.0 License/[http://www.ivn.cl/apache/LICENSE.txt Ivn Project License] | * Licenza: Apache 2.0 License/[http://www.ivn.cl/apache/LICENSE.txt Ivn Project License] | ||
* Copyright: Ivan Barrera A. | * Copyright: Ivan Barrera A. | ||
* Versione Apache: 2 | * Versione Apache: 2 | ||
==mod_bwshare== | === mod_bwshare === | ||
* HomePage: http://www.topology.org/src/bwshare/README.html | * HomePage: http://www.topology.org/src/bwshare/README.html | ||
* Licenza: [http://www.topology.org/src/bwshare/LICENCE Alan Kennington's modified Artistic Licence] | * Licenza: [http://www.topology.org/src/bwshare/LICENCE Alan Kennington's modified Artistic Licence] | ||
Riga 17: | Riga 20: | ||
* Versione Apache: 1 e 2 | * Versione Apache: 1 e 2 | ||
=Installazione= | == Installazione == | ||
==mod_bandwidth== | === mod_bandwidth === | ||
Il modulo <code>'''mod_bandwidth'''</code> è installato di default insieme al server apache; lo possiamo trovare in <code>'''/usr/lib/apache/1.3/'''</code>. | Il modulo <code>'''mod_bandwidth'''</code> è installato di default insieme al server apache; lo possiamo trovare in <code>'''/usr/lib/apache/1.3/'''</code>. | ||
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. | 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. | ||
Riga 43: | Riga 46: | ||
===Aggiornamento=== | ==== Aggiornamento ==== | ||
Il procedimento appena presentato, crea diversi problemi, soprattutto in fase di aggiornamento del sistema: ogni volta il pacchetto | Il procedimento appena presentato, crea diversi problemi, soprattutto in fase di aggiornamento del sistema: ogni volta il pacchetto | ||
Riga 67: | Riga 70: | ||
</pre> | </pre> | ||
==bw_mod== | === bw_mod === | ||
Come prima cosa procuriamoci il modulo dal [http://www.ivn.cl/apache/ sito dello sviluppatore]. A questo punto estraiamolo: | Come prima cosa procuriamoci il modulo dal [http://www.ivn.cl/apache/ sito dello sviluppatore]. A questo punto estraiamolo: | ||
<pre># tar vzxf bw_mod-6.0.tgz</pre> | <pre># tar vzxf bw_mod-6.0.tgz</pre> | ||
Riga 83: | Riga 86: | ||
In questo caso non dobbiamo preoccuparci, in quanto nel file <code>apache2.conf</code> c'è un richiamo a <code>httpd.conf</code>.}} | In questo caso non dobbiamo preoccuparci, in quanto nel file <code>apache2.conf</code> c'è un richiamo a <code>httpd.conf</code>.}} | ||
==mod_bwshare== | === mod_bwshare === | ||
Ancora da scrivere | Ancora da scrivere | ||
=Configurazione= | == Configurazione == | ||
==mod_bandwidth== | === mod_bandwidth === | ||
Ora configuriamo apache per utilizzare mod_bandwidth.<br/> | Ora configuriamo apache per utilizzare mod_bandwidth.<br/> | ||
Aggiungiamo il modulo al file <code>'''/etc/apache/modules.conf'''</code>. Per fare questo abbiamo due possibilità: | Aggiungiamo il modulo al file <code>'''/etc/apache/modules.conf'''</code>. Per fare questo abbiamo due possibilità: | ||
Riga 115: | Riga 118: | ||
</pre> | </pre> | ||
===Note per il corretto funzionamento=== | ==== Note per il corretto funzionamento ==== | ||
Per ottenere risultati, è importante che non ci siano dei link morti nella directory <code>'''link'''</code> di mod_bandwidth, quando viene eseguito avviato il server con il modulo attivo. | Per ottenere risultati, è importante che non ci siano dei link morti nella directory <code>'''link'''</code> di mod_bandwidth, quando viene eseguito avviato il server con il modulo attivo. | ||
Riga 122: | Riga 125: | ||
===Direttive globali di configurazione=== | ==== Direttive globali di configurazione ==== | ||
====<code>'''BandWidthDataDir'''</code>==== | ===== <code>'''BandWidthDataDir'''</code> ===== | ||
'''Sintassi''': <code>BandWidthDataDir <directory></code><br/> | '''Sintassi''': <code>BandWidthDataDir <directory></code><br/> | ||
'''Default''': <code>/tmp/apachebw</code><br/> | '''Default''': <code>/tmp/apachebw</code><br/> | ||
Riga 131: | Riga 134: | ||
====<code>'''BandWidthModule'''</code>==== | ===== <code>'''BandWidthModule'''</code> ===== | ||
'''Sintassi''': <code>BandWidthModule <On|Off></code><br/> | '''Sintassi''': <code>BandWidthModule <On|Off></code><br/> | ||
'''Default''': <code>Off</code><br/> | '''Default''': <code>Off</code><br/> | ||
Riga 140: | Riga 143: | ||
====<code>'''BandWidthPulse'''</code>==== | ===== <code>'''BandWidthPulse'''</code> ===== | ||
'''Sintassi''': <code>BandWidthPulse <microseconds></code> <br/> | '''Sintassi''': <code>BandWidthPulse <microseconds></code> <br/> | ||
'''Default''':<br/> | '''Default''':<br/> | ||
Riga 154: | Riga 157: | ||
===Direttive per la configurazione di Directory e/o VirtualServer=== | ==== Direttive per la configurazione di Directory e/o VirtualServer ==== | ||
====<code>'''BandWidth'''</code>==== | ===== <code>'''BandWidth'''</code> ===== | ||
'''Sintassi''': <code>BandWidth <domain|ip|all> <rate></code><br/> | '''Sintassi''': <code>BandWidth <domain|ip|all> <rate></code><br/> | ||
'''Default''': <code>none</code><br/> | '''Default''': <code>none</code><br/> | ||
Riga 177: | Riga 180: | ||
====<code>'''LargeFileLimit'''</code>==== | ===== <code>'''LargeFileLimit'''</code> ===== | ||
'''Sintassi''': <code>LargeFileLimit <filesize> <rate></code><br/> | '''Sintassi''': <code>LargeFileLimit <filesize> <rate></code><br/> | ||
'''Default''': <code>none</code><br/> | '''Default''': <code>none</code><br/> | ||
Riga 196: | Riga 199: | ||
====<code>'''MaxConnection'''</code>==== | ===== <code>'''MaxConnection'''</code> ===== | ||
'''Sintassi''': <code>MaxConnection <connections></code><br/> | '''Sintassi''': <code>MaxConnection <connections></code><br/> | ||
'''Default''': <code>0</code> (illimitate)<br/> | '''Default''': <code>0</code> (illimitate)<br/> | ||
Riga 204: | Riga 207: | ||
====<code>'''MinBandWidth'''</code>==== | ===== <code>'''MinBandWidth'''</code> ===== | ||
'''Sintassi''': <code>MinBandWidth <domain|ip|all> <rate></code><br/> | '''Sintassi''': <code>MinBandWidth <domain|ip|all> <rate></code><br/> | ||
'''Default''': <code>all 256</code><br/> | '''Default''': <code>all 256</code><br/> | ||
Riga 231: | Riga 234: | ||
{{Box|NOTA:|Se ad una richiesta devono essere applicati sia un limite impostato nella direttiva <code>BandWidth</code> sia uno impostato nella direttiva <code>LargeFileLimit</code>, verrà applicato il più piccolo (ma mai minore a quello eventualmente indicato nella direttiva <code>MinBandWidth</code>)}} | {{Box|NOTA:|Se ad una richiesta devono essere applicati sia un limite impostato nella direttiva <code>BandWidth</code> sia uno impostato nella direttiva <code>LargeFileLimit</code>, verrà applicato il più piccolo (ma mai minore a quello eventualmente indicato nella direttiva <code>MinBandWidth</code>)}} | ||
==bw_mod== | === bw_mod === | ||
In Apache2 la configurazione globale del server può essere separata da quella dei VHosts e delle Directory. Sono presenti, infatti, due file: < | In Apache2 la configurazione globale del server può essere separata da quella dei VHosts e delle Directory. Sono presenti, infatti, due file: <code>/etc/apache2/apache2.conf</code>, in cui sono inserite le configurazioni globali del server (praticamente la maggior parte delle direttive del vecchio <code>httpd.conf</code>); e <code>/etc/apache2/sites-enabled/000-default</code>, in cui ci sono le direttive per VHosts e Directories (in realtà è un link simbolico al file <code>/etc/apache2/sites-available/default</code>).<br/> | ||
Per poter, quindi, configurare il nostro ''bw_mod'', possiamo inserire le prime quattro direttive della seguente lista in < | Per poter, quindi, configurare il nostro ''bw_mod'', possiamo inserire le prime quattro direttive della seguente lista in <code>apache2.conf</code> come variabili globali, mentre tutte le altre possono essere inserite indifferentemente in <code>apache2.conf</code>, se vogliamo applicare le limitazioni a tutti i siti serviti dal serverweb, oppure in <code>000-default</code> nelle apposite sezioni, se vogliamo applicarle a specifici VHosts o Directories.<br/> | ||
{{ Warningbox | Momentaneamente il modulo '''non supporta il sistema .htaccess''', quindi non è possibile inserire le direttive in questi file.<br/> | {{ Warningbox | Momentaneamente il modulo '''non supporta il sistema .htaccess''', quindi non è possibile inserire le direttive in questi file.<br/> | ||
In alcuni punti della guida si fa riferimento alla configurazione di direttive del modulo ''mod_bandwidth'' dove è indicata la possibilità d'uso in .htaccess: con ''bw_mod'' non bisogna prendere in considerazione quei '''contesti'''.}} | In alcuni punti della guida si fa riferimento alla configurazione di direttive del modulo ''mod_bandwidth'' dove è indicata la possibilità d'uso in .htaccess: con ''bw_mod'' non bisogna prendere in considerazione quei '''contesti'''.}} | ||
==='''Direttive globali'''=== | ==== '''Direttive globali''' ==== | ||
====<code>'''BandWidthModule'''</code>==== | ===== <code>'''BandWidthModule'''</code> ===== | ||
'''Sintassi''': < | '''Sintassi''': <code>BandWidthModule On|Off</code><br/> | ||
'''Default''': < | '''Default''': <code>Off</code><br/> | ||
Tramite questa direttiva attiviamo o disattiviamo il modulo | Tramite questa direttiva attiviamo o disattiviamo il modulo | ||
====<code>'''BandWidthDebug'''</code>==== | ===== <code>'''BandWidthDebug'''</code> ===== | ||
'''Sintassi''': < | '''Sintassi''': <code>BandWidthDebug On|Off</code><br/> | ||
'''Default''': < | '''Default''': <code>Off</code><br/> | ||
Questa direttiva serve ad attivare la funzione di debug (utile per chi si vuole divertire a sviluppare il modulo). | Questa direttiva serve ad attivare la funzione di debug (utile per chi si vuole divertire a sviluppare il modulo). | ||
====<code>'''BandWidthPacket'''</code>==== | ===== <code>'''BandWidthPacket'''</code> ===== | ||
'''Sintassi''': < | '''Sintassi''': <code>BandWidthPacket <Dimensione pacchetti in bytes></code><br/> | ||
'''Default''': < | '''Default''': <code>8192</code><br/> | ||
Questa direttiva indica la dimensione massima dei pacchetti trasferiti.<br/> | Questa direttiva indica la dimensione massima dei pacchetti trasferiti.<br/> | ||
Solitamente, in una configurazione generica, non è necessario modificare questo valore. In caso si voglia ottimizzare la trasmissione dati (e soprattutto se si sa cosa si sa facendo), possono essere specificati valori tra 1024 e 131072.<br/> | Solitamente, in una configurazione generica, non è necessario modificare questo valore. In caso si voglia ottimizzare la trasmissione dati (e soprattutto se si sa cosa si sa facendo), possono essere specificati valori tra 1024 e 131072.<br/> | ||
In caso si usino valori eccessivi per la propria connessione, il modulo riporterà automaticamente la direttiva a valori più bassi. | In caso si usino valori eccessivi per la propria connessione, il modulo riporterà automaticamente la direttiva a valori più bassi. | ||
====<code>'''BandWidthError'''</code>==== | ===== <code>'''BandWidthError'''</code> ===== | ||
'''Sintassi''': < | '''Sintassi''': <code>BandWidthError <Num. Errore></code><br/> | ||
''' Default''': < | ''' Default''': <code>none</code> (Vengono usati i valori standard di Apache2).<br/> | ||
In caso vogliamo personalizzare la pagina di errore quando si raggiungono i limiti impostati con <code>''MaxConnection''</code>, con questa direttiva possiamo indicare ad apache che tipo di errore mostrare con <code><Num. Errore></code> ed eventualmente, mettendo mano alla direttiva <code>ErrorDocument</code> in < | In caso vogliamo personalizzare la pagina di errore quando si raggiungono i limiti impostati con <code>''MaxConnection''</code>, con questa direttiva possiamo indicare ad apache che tipo di errore mostrare con <code><Num. Errore></code> ed eventualmente, mettendo mano alla direttiva <code>ErrorDocument</code> in <code>/etc/apache2/apache2.conf</code>, quale pagina deve essere mostrata.<br/> | ||
Di default, quando viene raggiunto il numero massimo di connessioni, viene mostrata la classica pagina d'errore 503 HTTP_SERVICE_UNAVAILABLE (possiamo controllare in <code>apache2.conf</code> la sezione con tutti gli errori che apache può restituire al browser). | Di default, quando viene raggiunto il numero massimo di connessioni, viene mostrata la classica pagina d'errore 503 HTTP_SERVICE_UNAVAILABLE (possiamo controllare in <code>apache2.conf</code> la sezione con tutti gli errori che apache può restituire al browser). | ||
Se usiamo una pagina d'errore personalizzata, è importante che l'errore associato alla nostra pagina non sia già usato da apache (l'autore del modulo ha testato con successo l'errore numero 510). | Se usiamo una pagina d'errore personalizzata, è importante che l'errore associato alla nostra pagina non sia già usato da apache (l'autore del modulo ha testato con successo l'errore numero 510). | ||
Per esempio, per usare una pagina d'errore personalizzata, possiamo scrivere: | Per esempio, per usare una pagina d'errore personalizzata, possiamo scrivere: | ||
<pre>ErrorDocument 510 /errors/paginaerrore.html</pre> | <pre>ErrorDocument 510 /errors/paginaerrore.html</pre> | ||
nella direttiva <code>ErrorDocument</code> in < | nella direttiva <code>ErrorDocument</code> in <code>etc/apache2/apache2.conf</code>, e | ||
<pre>BandWidthError 510</pre> | <pre>BandWidthError 510</pre> | ||
nella direttiva <code>BandWidthError</code>. | nella direttiva <code>BandWidthError</code>. | ||
Riga 269: | Riga 272: | ||
{{ Warningbox | Possono sorgere problemi quando la pagina d'errore personalizzata ha una dimensione minore di 1024bytes: è opportuno, quindi, creare pagine più grandi di questo valore. }} | {{ Warningbox | Possono sorgere problemi quando la pagina d'errore personalizzata ha una dimensione minore di 1024bytes: è opportuno, quindi, creare pagine più grandi di questo valore. }} | ||
==='''Direttive per la configurazione di Directory e/o VirtualServer'''=== | ==== '''Direttive per la configurazione di Directory e/o VirtualServer''' ==== | ||
====<code>'''ForceBandWidthModule'''</code>==== | ===== <code>'''ForceBandWidthModule'''</code> ===== | ||
'''Sintassi''': < | '''Sintassi''': <code>ForceBandWidthModule On|Off</code><br/> | ||
'''Default''': < | '''Default''': <code>On</code><br/> | ||
Di default, naturalmente, il modulo processerà e applicherà i limiti a ogni richiesta al webserver. In caso si voglia indicare manualmente quali file debbano essere soggetti alla limitazione di banda, si può settare questa direttiva su <code>''off''</code>, aggiungendo, poi, i tipi di file cui deve essere applicato il limite: | Di default, naturalmente, il modulo processerà e applicherà i limiti a ogni richiesta al webserver. In caso si voglia indicare manualmente quali file debbano essere soggetti alla limitazione di banda, si può settare questa direttiva su <code>''off''</code>, aggiungendo, poi, i tipi di file cui deve essere applicato il limite: | ||
<pre>ForceBandWidthModule Off | <pre>ForceBandWidthModule Off | ||
AddOutputFilterByType BW_MOD text/html text/php</pre> | AddOutputFilterByType BW_MOD text/html text/php</pre> | ||
====<code>'''BandWidth'''</code>==== | ===== <code>'''BandWidth'''</code> ===== | ||
'''Sintassi''': < | '''Sintassi''': <code>BandWidth <Origine della connessione> <Limite di banda in bytes/s></code><br/> | ||
'''Default''': < | '''Default''': <code>all 0</code><br/> | ||
Vedi [[#BandWidth | BandWidth]] del ''mod_bandwidth''. | Vedi [[#BandWidth | BandWidth]] del ''mod_bandwidth''. | ||
====<code>'''MinBandWidth'''</code>==== | ===== <code>'''MinBandWidth'''</code> ===== | ||
'''Sintassi''': < | '''Sintassi''': <code>MinBandWidth <Origine della connessione> <Limite di banda in bytes/s></code><br/> | ||
'''Default''': < | '''Default''': <code>all 0</code><br/> | ||
Vedi [[#MinBandWidth | MinBandWidth]] del ''mod_bandwidth''. | Vedi [[#MinBandWidth | MinBandWidth]] del ''mod_bandwidth''. | ||
====<code>'''LargeFileLimit'''</code>==== | ===== <code>'''LargeFileLimit'''</code> ===== | ||
'''Sintassi''': < | '''Sintassi''': <code>LargeFileLimit <Tipo di file> <Dimensione minima file in KB> <Limite in bytes/s></code><br/> | ||
'''Default''': < | '''Default''': <code>none</code><br/> | ||
Con questa direttiva possiamo indicare un limite di trasferimento <code><Limite in bytes/s></code> per un determinato tipo di file <code><Tipo di file></code> che abbia la dimensione minima indicata con <code><dimensione minima del file in KB></code>. | Con questa direttiva possiamo indicare un limite di trasferimento <code><Limite in bytes/s></code> per un determinato tipo di file <code><Tipo di file></code> che abbia la dimensione minima indicata con <code><dimensione minima del file in KB></code>. | ||
Il parametro <code><Tipo di file></code> viene espresso con l'estensione del file (p.e. <code>''.avi''</code>, <code>''.exe''</code>, <code>''.tgz''</code>); si può usare il carattere jolly <code>''*''</code> per indicare ogni tipo di file. | Il parametro <code><Tipo di file></code> viene espresso con l'estensione del file (p.e. <code>''.avi''</code>, <code>''.exe''</code>, <code>''.tgz''</code>); si può usare il carattere jolly <code>''*''</code> per indicare ogni tipo di file. | ||
Riga 299: | Riga 302: | ||
diciamo al webserver che per i video con estensione AVI che abbiano dimensioni dai 500 kb in su, dovrà applicare uua velocità massima di trasferimento di 10kb/s. | diciamo al webserver che per i video con estensione AVI che abbiano dimensioni dai 500 kb in su, dovrà applicare uua velocità massima di trasferimento di 10kb/s. | ||
====<code>'''MaxConnection'''</code>==== | ===== <code>'''MaxConnection'''</code> ===== | ||
'''Sintassi''': < | '''Sintassi''': <code>MaxConnection <Origine delle connessioni> <Num. massimo connessioni></code><br/> | ||
'''Default''': < | '''Default''': <code>all 0</code> (Illimitate da ogni origine).<br/> | ||
Questa direttiva permette di impostare un numero massimo di connessioni provenienti da una determinata origine. La sintassi è simile alla direttiva <code>''BandWidth''</code>. Le connessioni eccedenti il limite riceveranno l'errore impostato in <code>''BandWidthError''</code> (di default è il 503). | Questa direttiva permette di impostare un numero massimo di connessioni provenienti da una determinata origine. La sintassi è simile alla direttiva <code>''BandWidth''</code>. Le connessioni eccedenti il limite riceveranno l'errore impostato in <code>''BandWidthError''</code> (di default è il 503). | ||
{{ Warningbox | Affinchè il limite di connessioni per una data origine possa essere applicato, è necessario che quella origine abbia anche una limitazione di banda specificata con <code>''BandWidth''</code>.<br/> | {{ Warningbox | Affinchè il limite di connessioni per una data origine possa essere applicato, è necessario che quella origine abbia anche una limitazione di banda specificata con <code>''BandWidth''</code>.<br/> | ||
Riga 310: | Riga 313: | ||
Come si può vedere, è una semplice questione di forma: infatti si può tranquillamente indicare come limite <code>''0''</code>, quindi infinito. L'importante è che sia specificato in <code>BandWidth</code>.}} | Come si può vedere, è una semplice questione di forma: infatti si può tranquillamente indicare come limite <code>''0''</code>, quindi infinito. L'importante è che sia specificato in <code>BandWidth</code>.}} | ||
==mod_bwshare== | === mod_bwshare === | ||
=Conclusione= | == Conclusione == | ||
Con questi moduli è possibile, in breve tempo e con la massima semplicità, | Con questi moduli è possibile, in breve tempo e con la massima semplicità, | ||
Riga 320: | Riga 323: | ||
internet. | internet. | ||
{{Autori | |||
|Autore = [[User:MaXeR|MaXeR]] | |||
|Estesa_da= | |||
:[[User:Soter|Soter]] | |||
}} | |||
[[Categoria:Web server]] | |||
[[ | [[Categoria:Ottimizzazione del sistema]] | ||
[[Categoria: |
contributi