Gestione della banda in Apache: differenze tra le versioni

m
da adottare
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: <tt>/etc/apache2/apache2.conf</tt>, in cui sono inserite le configurazioni globali del server (praticamente la maggior parte delle direttive del vecchio <tt>httpd.conf</tt>); e <tt>/etc/apache2/sites-enabled/000-default</tt>, in cui ci sono le direttive per VHosts e Directories (in realtà è un link simbolico al file <tt>/etc/apache2/sites-available/default</tt>).<br/>
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 <tt>apache2.conf</tt> come variabili globali, mentre tutte le altre possono essere inserite indifferentemente in <tt>apache2.conf</tt>, se vogliamo applicare le limitazioni a tutti i siti serviti dal serverweb, oppure in <tt>000-default</tt> nelle apposite sezioni, se vogliamo applicarle a specifici VHosts o Directories.<br/>
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''': <tt>BandWidthModule On|Off</tt><br/>
'''Sintassi''': <code>BandWidthModule On|Off</code><br/>
'''Default''': <tt>Off</tt><br/>
'''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''': <tt>BandWidthDebug On|Off</tt><br/>
'''Sintassi''': <code>BandWidthDebug On|Off</code><br/>
'''Default''': <tt>Off</tt><br/>
'''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''': <tt>BandWidthPacket <Dimensione pacchetti in bytes></tt><br/>
'''Sintassi''': <code>BandWidthPacket <Dimensione pacchetti in bytes></code><br/>
'''Default''': <tt>8192</tt><br/>
'''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''': <tt>BandWidthError <Num. Errore></tt><br/>
'''Sintassi''': <code>BandWidthError <Num. Errore></code><br/>
''' Default''': <tt>none</tt> (Vengono usati i valori standard di Apache2).<br/>
''' 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 <tt>/etc/apache2/apache2.conf</tt>, quale pagina deve essere mostrata.<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 <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 <tt>etc/apache2/apache2.conf</tt>, e
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''': <tt>ForceBandWidthModule On|Off</tt><br/>
'''Sintassi''': <code>ForceBandWidthModule On|Off</code><br/>
'''Default''': <tt>On</tt><br/>
'''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''': <tt>BandWidth <Origine della connessione> <Limite di banda in bytes/s></tt><br/>
'''Sintassi''': <code>BandWidth <Origine della connessione> <Limite di banda in bytes/s></code><br/>
'''Default''': <tt>all 0</tt><br/>
'''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''': <tt>MinBandWidth <Origine della connessione> <Limite di banda in bytes/s></tt><br/>
'''Sintassi''': <code>MinBandWidth <Origine della connessione> <Limite di banda in bytes/s></code><br/>
'''Default''': <tt>all 0</tt><br/>
'''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''': <tt>LargeFileLimit <Tipo di file> <Dimensione minima file in KB> <Limite in bytes/s></tt><br/>
'''Sintassi''': <code>LargeFileLimit <Tipo di file> <Dimensione minima file in KB> <Limite in bytes/s></code><br/>
'''Default''': <tt>none</tt><br/>
'''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''': <tt>MaxConnection <Origine delle connessioni> <Num. massimo connessioni></tt><br/>
'''Sintassi''': <code>MaxConnection <Origine delle connessioni> <Num. massimo connessioni></code><br/>
'''Default''': <tt>all 0</tt> (Illimitate da ogni origine).<br/>
'''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]]
[[User:MaXeR|MaXeR]]
[[Categoria:Ottimizzazione del sistema]]
[[User:Soter|Soter]]
[[Categoria:Server]][[Categoria:Networking]]
3 581

contributi