3 581
contributi
m (sistemato per l'inclusione degli altri moduli) |
m (da adottare) |
||
(44 versioni intermedie di 8 utenti non mostrate) | |||
Riga 1: | Riga 1: | ||
{{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: | |||
=== mod_bandwidth === | |||
* HomePage: http://www.cohprog.com/mod_bandwidth.html | |||
* Licenza: Apache Group licence | |||
* Copyright: Yann Stettler and CohProg SàRL | |||
* Versione Apache: 1 | |||
=== bw_mod === | |||
* HomePage: http://www.ivn.cl/apache/ | |||
* Licenza: Apache 2.0 License/[http://www.ivn.cl/apache/LICENSE.txt Ivn Project License] | |||
* Copyright: Ivan Barrera A. | |||
* Versione Apache: 2 | |||
=== mod_bwshare === | |||
* HomePage: http://www.topology.org/src/bwshare/README.html | |||
* Licenza: [http://www.topology.org/src/bwshare/LICENCE Alan Kennington's modified Artistic Licence] | |||
* Copyright: Alan Kennington | |||
* Versione Apache: 1 e 2 | |||
== Installazione == | |||
=== 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>. | |||
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. | |||
* rechiamoci sul sito del produttore: http://www.cohprog.com/mod_bandwidth.html e scarichiamo l'ultima versione (link diretto: | |||
ftp://ftp.cohprog.com/pub/apache/module/1.3.0/mod_bandwidth.c).<br/> | |||
* per poter compilare questo modulo, abbiamo bisogno del pacchetto <code>'''apache-dev'''</code>. 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 <code>'''500mod_bandwidth_new'''</code> 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 <code>'''/etc/apache/modules.conf'''</code>: 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> | |||
=== bw_mod === | |||
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> | |||
spostiamoci nella cartella appena creata (<code>bw_mod-6.0.tgz</code>) e verifichiamo che sia presente il file <code>bw_mod-6.0.c</code>. | |||
Ora, per poter compilare il nostro modulo, ci servono gli strumenti per farlo: nel nostro caso dovremo installare, tramite apt-get, il pacchetto <code>'''apache2-dev'''</code>: | |||
<pre># apt-get install apache2-dev</pre> | |||
Bene, ora compiliamo tramite il comando <code>/usr/bin/apsx2</code>: | |||
<pre># /usr/bin/apxs2 -i -a -c bw_mod-0.6.c</pre> | |||
Se non ci sono errori, possiamo procedere. Alla fine della compilazione sono state automaticamente aggiunte queste righe al file <code>/etc/apache2/httpd.conf</code>: | |||
<pre>Include /etc/apache2/sysconfig.d/loadmodule.conf | |||
LoadModule bw_module /usr/lib/apache2/bw_mod-0.6.so</pre> | |||
{{Box | Nota |Apache2 usa come file di configurazione <code>/etc/apache2/apache2.conf</code>; tuttavia, per retrocompatibilità, è presente anche un file <code>/etc/apache2/httpd.conf</code> in cui vengono inseriti solitamente gli "includes" dei moduli di terze parti laddove questi non usino il sistema <code>'''mods-available/mods-enabled'''</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 === | |||
Ancora da scrivere | |||
== Configurazione == | |||
=== mod_bandwidth === | |||
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à: | |||
* modificare a mano il file, aggiungendo la seguente riga, alla fine del file: | |||
<pre> | |||
LoadModule bandwidth_module /usr/lib/apache/1.3/mod_bandwidth.so | |||
</pre> | |||
*utilizzare <code>modules-config></code>: | |||
<pre> | |||
modules-config apache enable mod_bandwidth | |||
</pre> | |||
Creiamo le cartelle temporanee per <code>mod_bandwidth</code>: | |||
<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 ripulisca la directory <code>'''/tmp'''</code>, quindi cambiamo la posizione di queste cartelle con la direttiva <code>BandWidthDataDir</code>). | |||
Ecco fatto, ora con il seguente comando facciamo rileggere ad apache i file di configurazione: | |||
<pre> | |||
# /etc/init.d/apache reload | |||
</pre> | |||
==== 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. | |||
Potrebbe essere una buona idea, a questo scopo, eseguire lo script <code>'''cleanlink.pl'''</code>, che provvede a rimuovere automaticamente i link morti. | |||
==== Direttive globali di configurazione ==== | |||
===== <code>'''BandWidthDataDir'''</code> ===== | |||
'''Sintassi''': <code>BandWidthDataDir <directory></code><br/> | |||
'''Default''': <code>/tmp/apachebw</code><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). | |||
===== <code>'''BandWidthModule'''</code> ===== | |||
'''Sintassi''': <code>BandWidthModule <On|Off></code><br/> | |||
'''Default''': <code>Off</code><br/> | |||
'''Contesto''': per server config<br/> | |||
Abilita o disabilita il modulo. | |||
{{Box|NOTA:|Per utilizzarlo all'interno di un virtual host, è necessario inserire la direttiva <code>'''BandWidthModule On'''</code> all'interno del blocco del virtual host. Se viene attivato globalmente (cioè all'interno del file <code>httpd.conf</code>, fuori da ogni blocco), il modulo è attivo automaticamente in tutti i sottoblocchi (Virtual Host, etc).}} | |||
== | ===== <code>'''BandWidthPulse'''</code> ===== | ||
'''Sintassi''': <code>BandWidthPulse <microseconds></code> <br/> | |||
'''Default''':<br/> | |||
'''Contesto''': per server config<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 aspetterà sempre lo stesso lasso di tempo, prima di trasmettere pacchetti, e la dimensione dei pacchetti varierà di conseguenza, così da rispettare i criteri indicati nelle altre direttive. Il valore è in microsecondi. | |||
'''Esempio:''' | |||
<pre> | <pre> | ||
# | BandWidthPulse 1000000 #1 secondo | ||
</pre> | </pre> | ||
Se oltre a questa direttiva è presente un limite a 512B, il server trasmetterà 512B, aspetterà un secondo, trasmetterà 512B, aspetterà un secondo e così via. | |||
per | ==== Direttive per la configurazione di Directory e/o VirtualServer ==== | ||
===== <code>'''BandWidth'''</code> ===== | |||
'''Sintassi''': <code>BandWidth <domain|ip|all> <rate></code><br/> | |||
'''Default''': <code>none</code><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) <code>'''<rate>'''</code> deve essere espresso in Byte/secondo. Impostato a <code>0</code> 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:''' | |||
<pre> | <pre> | ||
BandWidth ecp.fr 0 | |||
</pre> | BandWidth 138.195 0 | ||
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. | |||
===== <code>'''LargeFileLimit'''</code> ===== | |||
'''Sintassi''': <code>LargeFileLimit <filesize> <rate></code><br/> | |||
'''Default''': <code>none</code><br/> | |||
'''Contesto''': per directory, .htaccess<br/> | |||
Imposta un limite <code>'''<rate>'''</code> da usare quando si trasferiscono file di dimensioni uguali o maggiori a <code><filesize></code>. | |||
È possibile utilizzare più direttive per diverse dimensioni; anche in questo caso, se il parametro viene impostato a <code>0</code>, non sarà impostato alcun limite (rimarrà, ovviamente, l'eventuale limite impostato in <code>BandWidth</code>). Se viene impostato a <code>-1</code>, invece, saranno aboliti tutti i limiti (anche quelli impostati con la direttiva <code>BandWidth</code>) per i file la cui dimensione rispecchia quella direttiva. | |||
'''Esempio:''' | |||
<pre> | <pre> | ||
LargeFileLimit 200 3072 | |||
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 <code>BandWidth</code>); | |||
* 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. | |||
===== <code>'''MaxConnection'''</code> ===== | |||
'''Sintassi''': <code>MaxConnection <connections></code><br/> | |||
'''Default''': <code>0</code> (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 <code>0</code> (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). | |||
===== <code>'''MinBandWidth'''</code> ===== | |||
'''Sintassi''': <code>MinBandWidth <domain|ip|all> <rate></code><br/> | |||
'''Default''': <code>all 256</code><br/> | |||
'''Contesto''': per directory, .htaccess<br/> | |||
Imposta una banda minima per il trasferimento dei dati. Questa direttiva può sovrascrivere le direttive <code>BandWidth</code> e <code>LargeFileLimit</code>, 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 argomento è da usarsi come per la direttiva <code>BandWidth</code>. Deve essere espresso in Byte/Secondo; se viene impostato a <code>0</code>, verrà usato il valore di default (256). | |||
'''Esempio :''' | |||
<pre> | <pre> | ||
BandWidth all 3072 | |||
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<code>MinBandWidth</code> è impostato a <code>-1</code> 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 <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 === | |||
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 <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/> | |||
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''' ==== | |||
===== <code>'''BandWidthModule'''</code> ===== | |||
'''Sintassi''': <code>BandWidthModule On|Off</code><br/> | |||
'''Default''': <code>Off</code><br/> | |||
Tramite questa direttiva attiviamo o disattiviamo il modulo | |||
===== <code>'''BandWidthDebug'''</code> ===== | |||
'''Sintassi''': <code>BandWidthDebug On|Off</code><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). | |||
===== <code>'''BandWidthPacket'''</code> ===== | |||
'''Sintassi''': <code>BandWidthPacket <Dimensione pacchetti in bytes></code><br/> | |||
'''Default''': <code>8192</code><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/> | |||
In caso si usino valori eccessivi per la propria connessione, il modulo riporterà automaticamente la direttiva a valori più bassi. | |||
===== <code>'''BandWidthError'''</code> ===== | |||
'''Sintassi''': <code>BandWidthError <Num. Errore></code><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 <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). | |||
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: | |||
<pre>ErrorDocument 510 /errors/paginaerrore.html</pre> | |||
nella direttiva <code>ErrorDocument</code> in <code>etc/apache2/apache2.conf</code>, e | |||
<pre>BandWidthError 510</pre> | |||
nella direttiva <code>BandWidthError</code>. | |||
{{ 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''' ==== | |||
===== <code>'''ForceBandWidthModule'''</code> ===== | |||
'''Sintassi''': <code>ForceBandWidthModule On|Off</code><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: | |||
<pre>ForceBandWidthModule Off | |||
AddOutputFilterByType BW_MOD text/html text/php</pre> | |||
===== <code>'''BandWidth'''</code> ===== | |||
'''Sintassi''': <code>BandWidth <Origine della connessione> <Limite di banda in bytes/s></code><br/> | |||
'''Default''': <code>all 0</code><br/> | |||
Vedi [[#BandWidth | BandWidth]] del ''mod_bandwidth''. | |||
===== <code>'''MinBandWidth'''</code> ===== | |||
'''Sintassi''': <code>MinBandWidth <Origine della connessione> <Limite di banda in bytes/s></code><br/> | |||
'''Default''': <code>all 0</code><br/> | |||
Vedi [[#MinBandWidth | MinBandWidth]] del ''mod_bandwidth''. | |||
===== <code>'''LargeFileLimit'''</code> ===== | |||
'''Sintassi''': <code>LargeFileLimit <Tipo di file> <Dimensione minima file in KB> <Limite in bytes/s></code><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>. | |||
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. | |||
La <code><Dimensione minima file in KB></code>, come scritto, viene indicata in kilobytes. | |||
Il <code><Limite in bytes/s></code> indica la velocità massima alla quale verranno trasferiti i files interessati da questa direttiva. | |||
Per esempio, con: | |||
<pre>LargeFileLimit .avi 500 10240</pre> | |||
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> ===== | |||
'''Sintassi''': <code>MaxConnection <Origine delle connessioni> <Num. massimo connessioni></code><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). | |||
{{ 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/> | |||
Quindi, se vogliamo limitare le connessioni provenienti da 192.168.2.0 con | |||
<pre>MaxConnection 192.168.2.0 20</pre> | |||
è fondamentale che il traffico con quella specifica rete sia indicato in | |||
<pre>BandWidth 192.168.2.0 0</pre> | |||
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 === | |||
== Conclusione == | |||
Con questi moduli è 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, che | |||
comporterebbe lentezza nelle risposte dei vari servizi e della navigazione su | |||
internet. | |||
{{Autori | |||
|Autore = [[User:MaXeR|MaXeR]] | |||
|Estesa_da= | |||
:[[User:Soter|Soter]] | |||
}} | |||
[[Categoria:Web server]] | |||
[[Categoria: | [[Categoria:Ottimizzazione del sistema]] | ||
[[Categoria: |
contributi