Sophie

Sophie

distrib > Mandriva > 9.1 > i586 > by-pkgid > f1098342ec4a2b28475e34123ce17201 > files > 1269

howto-html-it-9.1-0.5mdk.noarch.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<TITLE>Virtual Services Howto: Web virtuale </TITLE>
<LINK HREF="Virtual-Services-HOWTO-9.html" REL=next>
<LINK HREF="Virtual-Services-HOWTO-7.html" REL=previous>
<LINK HREF="Virtual-Services-HOWTO.html#toc8" REL=contents>
</HEAD>
<BODY>
<A HREF="Virtual-Services-HOWTO-9.html">Avanti</A>
<A HREF="Virtual-Services-HOWTO-7.html">Indietro</A>
<A HREF="Virtual-Services-HOWTO.html#toc8">Indice</A>
<HR>
<H2><A NAME="s8">8. Web virtuale </A></H2>

<H2><A NAME="ss8.1">8.1 Usando virtuald</A>
</H2>

<H3>Non raccomandabile</H3>

<P>Apache ha un supporto interno per i domini virtuali. &Egrave; il solo
programma di cui raccomando di usare le funzionalit&agrave; interne per
la gestione dei domini virtuali. Ogniqualvolta si lancia qualcosa
attraverso inetd c'&egrave; un prezzo da pagare: il programma deve
ripartire da zero ogni volta che ne viene richiesta l'esecuzione. Questo
causa un rallentamento nel tempi di risposta, che &egrave; accettabile per
la gran parte dei servizi, ma inaccettabile per quello web. Apache ha
anche un meccanismo per impedire connessioni quando ce ne siano troppe
in entrata, che potrebbe essere un fattore critico anche per siti con un
volume di traffico medio.
<P>
<P>Detto in poche parole, rendere virtuale Apache con virtuald &egrave; una
pessima idea. Virtuald trova la sua ragion d'essere nel colmare le lacune
di servizi che non hanno la capacit&agrave; di gestire in proprio i domini
virtuali. Virtuald non &egrave; pensato per rimpiazzare del codice di
buona qualit&agrave; che sia in grado di svolgere da s&eacute; questo
compito.
<P>
<P>Per coloro che sono abbastanza sconsiderati da farlo comunque, malgrado
quanto detto sopra, ecco come fare:
<P>
<H3>Inetd</H3>

<P>Modificare /etc/inetd.conf
<P>
<PRE>
vi /etc/inetd.conf # Aggiungi questa linea
www stream tcp nowait www /usr/local/bin/virtuald \
        virtuald /virtual/conf.www httpd -f /var/www/conf/httpd.conf
</PRE>
<P>
<H3>Httpd.conf</H3>

<P>Modificare /var/www/conf/httpd.conf
<P>
<PRE>
vi /var/www/conf/httpd.conf # O dovunque si trovino i file di configurazione

Dovrebbe esserci:
ServerType standalone

Rimpiazzare la riga con:
ServerType inetd
</PRE>
<P>
<H3>Configurazione</H3>

<P>Si configuri poi ogni singola istanza del server Apache come si farebbe
usandolo per un singolo dominio.
<P>
<H3>Httpd.init</H3>

<P>Non &egrave; necessario un file httpd.init, dato che il programma server
viene eseguito attraverso inetd.
<P>
<H2><A NAME="ss8.2">8.2 Usando Apache VirtualHost</A>
</H2>

<P>Apache ha tre file di configurazione <CODE>access.conf</CODE>, <CODE>httpd.conf</CODE>, e <CODE>srm.conf</CODE>. Le versioni recenti di Apache hanno reso non
necessari i tre file di configurazione. Comunque ho trovato che suddividere
la configurazione in tre sezioni ne semplifica la gestione, per cui
continuer&ograve; a fare cos&igrave; in questo HOWTO.
<P>
<H3>Access.conf</H3>

<P>Questo file di configurazione &egrave; usato per controllare l'accesso alle
directory della struttura del sito. Ecco una configurazione di esempio che
mostra come si possano gestire opzioni differenti per ciascun dominio:
<P>
<PRE>
# /var/www/conf/access.conf: Configurazione di accesso globale

# Le opzioni sono ereditate dalla directory genitore
# Configura la directory principale con le opzioni predefinite
&lt;Directory /&gt;
AllowOverride None
Options Indexes
&lt;/Directory&gt;

# Fornisce a un dominio una directory protetta da password
&lt;Directory /virtual/domain1.com/var/www/html/priv&gt;
AuthUserFile /var/www/passwd/domain1.com-priv
AuthGroupFile /var/www/passwd/domain1.com-priv-g
AuthName PRIVSECTION
AuthType Basic
&lt;Limit GET PUT POST&gt;
require valid-user
&lt;/Limit&gt;
&lt;/Directory&gt;

# Permette i Server Side Include in un altro dominio
&lt;Directory /virtual/domain2.com/var/www/html&gt;
Options IncludesNOEXEC
&lt;/Directory&gt;
</PRE>
<P>
<H3>Httpd.conf</H3>

<P>Questo file di configurazione &egrave; usato per gestire le opzioni
principali del server Apache. Ecco una configurazione di esempio che mostra
come si possano gestire opzioni differenti per ciascun dominio:
<P>
<PRE>
# /var/www/conf/httpd.conf: File principale di configurazione del server

# Inizio: sezione principale di configurazione

# La riga seguente &egrave; necessaria dato che non si sta usando inetd
ServerType standalone

# Porta sulla quale gira il server
Port 80

# Registra nei log gli host dei client con i loro nomi piuttosto che con
# gli indirizzi IP
HostnameLookups on

# Utente con i privilegi del quale gira il server
User www
Group www

# Collocazione dei file di configurazione, di errore e di log
ServerRoot /var/www

# File in cui si trova l'identificatore di processo (Process Id) del server
PidFile /var/run/httpd.pid

# File di informazioni sullo stato interno del server
ScoreBoardFile /var/www/logs/apache_status

# Opzioni di Timeout e KeepAlive
Timeout 400
KeepAlive 5
KeepAliveTimeout 15

# Limitazioni per i server in esecuzione
MinSpareServers 5
MaxSpareServers 10
StartServers 5
MaxClients 150
MaxRequestsPerChild 30

# Fine: sezione principale di configurazione

# Inizio: sezione host virtuale

# Specifica le coppie IP:porta su cui il demone accetta connessioni
# Io ho una direttiva per ogni IP necessario in modo da poter
# ignorare esplicitamente certi domini
Listen 10.10.10.129:80
Listen 10.10.10.130:80

# La direttiva VirtualHost permette di specificare un altro dominio
# virtuale sul server. La maggior parte delle opzioni di Apache possono
# essere specificate all'interno di questa sezione.
&lt;VirtualHost www.domain1.com&gt;

# Indirizzo di e-mail da contattare in caso di errori
ServerAdmin webmaster@domain1.com

# Collocazione dei documenti web nel dominio virtuale
DocumentRoot /virtual/domain1.com/var/www/html

# Nome di dominio del server
ServerName www.domain1.com

# File di Log relativi alla direttiva ServerRoot
ErrorLog logs/domain1.com-error_log
TransferLog logs/domain1.com-access_log
RefererLog logs/domain1.com-referer_log
AgentLog logs/domain1.com-agent_log

# Usa gli script CGI in questo dominio
ScriptAlias /cgi-bin/ /var/www/cgi-bin/domain1.com/
AddHandler cgi-script .cgi
AddHandler cgi-script .pl
&lt;/VirtualHost&gt;

&lt;VirtualHost www.domain2.com&gt;

# Indirizzo di e-mail da contattare in caso di errori
ServerAdmin webmaster@domain2.com

# Collocazione delle pagine web nel dominio virtuale
DocumentRoot /virtual/domain2.com/var/www/html

# Nome di dominio del server
ServerName www.domain2.com

# File di Log relativi alla direttiva ServerRoot
ErrorLog logs/domain2.com-error_log
TransferLog logs/domain2.com-access_log
RefererLog logs/domain2.com-referer_log
AgentLog logs/domain2.com-agent_log

# Niente script CGI per questo host virtuale
&lt;/VirtualHost&gt;
# Fine: sezione host virtuale
</PRE>
<P>
<H3>Srm.conf</H3>

<P>Questo file di configurazione viene usato per controllare il modo in cui
vengono processate le richieste e il formato dei risultati. Non ci sono
modifiche particolari da apportare per i domini virtuali. Il file di
configurazione di esempio dovrebbe andar bene. 
<P>
<H3>Httpd.init</H3>

<P>Non si devono apportate modifiche particolari al file httpd.init. Si
pu&ograve; usare quello standard, compreso nella configurazione di Apache.
<P>
<H2><A NAME="ss8.3">8.3 Overflow dei descrittori di file</A>
</H2>

<H3>Attenzione!</H3>

<P>Quanto si dir&agrave; si applica solo al server Apache eseguito come
`standalone' (indipendente). Se il programma server viene eseguito
attraverso inetd, esso non interagisce con gli altri domini, per cui ha
un'intera tabella di descrittori di file per ogni dominio.
<P>
<P>Ogni file di log che il server Apache apre significa un descrittore di file
in pi&ugrave; per il processo. C'&egrave; un limite di 256 descrittori di
file per processo in Linux. Dato che si gestiscono pi&ugrave; domini con un
unico server web, si usano un mucchio di descrittori di file. Se un solo
server web Apache, che &egrave; un processo singolo, supporta troppi domini,
&egrave; possibile causare un overflow in questa tabella. Ci&ograve;significherebbe la mancata registrazione di alcuni log e
l'impossibilit&agrave; di eseguire script CGI.
<P>
<H3>Server Apache multipli</H3>

<P>Se si ipotizza l'uso di cinque descrittori di file per dominio, si possono
gestire 50 domini su un solo server Apache senza nessun problema. Comunque,
nel caso si riscontrino problemi del genere, si pu&ograve; creare /var/www1
con un server Apache che s'incarichi dei domini da domain1 a domain25 e
/var/www2 con un server Apache che gestisca i domini dal domain26 al
domain50 e cos&igrave; via.
Cos&igrave; facendo ogni server avr&agrave; la propria directory di file di
configurazione, di errore e di log. Ogni server dovr&agrave; essere
configurato separatamente, ognuno con le proprie direttive Listen e
VirtualHost. Non ci si dimentichi di lanciare pi&ugrave; server tramite il
proprio file httpd.init.
<P>
<H2><A NAME="ss8.4">8.4 Server che condividono un unico IP</A>
</H2>

<H3>Risparmiare indirizzi IP</H3>

<P>HTTP (HyperText Transfer Protocol) versione 1.1 fornisce una funzionalit&agrave;
per comunicare il nome di dominio del server al client. Ci&ograve; significa
che il client non ha necessit&agrave; di risolvere il nome del server a
partire dall'indirizzo IP. Perci&ograve; due server virtuali potranno avere
gli stessi indirizzi IP ed essere siti web diversi. La configurazione di
Apache &egrave; la stessa di sopra eccetto che non sar&agrave; necessario
inserire direttive Listen differenti, dato che i due domini avranno lo
stesso IP. 
<P>
<H3>Inconveniente!</H3>

<P>Il solo problema &egrave; che virtuald usa gli indirizzi IP per distinguere
tra i vari domini. Nella sua stesura attuale, [nel caso si condividano
indirizzi IP N.d.T.] virtuald non sarebbe in grado di eseguire il
<CODE>chroot</CODE> a differenti directory di spool per ogni dominio.
Perci&ograve; il servizio di posta risponderebbe solo a livello di singolo
indirizzo IP e non ci sarebbe pi&ugrave; una singola directory di spool per
ogni dominio. Tutti i client del medesimo IP condiviso sul web dovrebbero
condividere la medesima directory di spool. Ci&ograve; significa che
duplicati di nomiutente costituerebbero nuovamente un problema [non si
potrebbero usare gli stessi nomiutente in domini virtuali diversi N.d.T.].
Comunque questo &egrave; il prezzo da pagare per condividere lo stesso
indirizzo IP.
<P>
<H2><A NAME="ss8.5">8.5 Maggiori informazioni</A>
</H2>

<P>Questo HOWTO mostra come implementare il supporto ai domini virtuali solo
con il web server Apache. La maggior parte dei server web usano
un'interfaccia simile. Per maggiori informazioni sul web hosting virtuale
si consulti 
<A HREF="http://sunsite.unc.edu/LDP/HOWTO/WWW-HOWTO.html">WWW HOWTO</A>, la documentazione di Apache presso 
<A HREF="http://www.apache.org">Sito web di Apache</A>, o la documentazione
presso 
<A HREF="http://www.apacheweek.com">ApacheWeek</A>.
<P>
<HR>
<A HREF="Virtual-Services-HOWTO-9.html">Avanti</A>
<A HREF="Virtual-Services-HOWTO-7.html">Indietro</A>
<A HREF="Virtual-Services-HOWTO.html#toc8">Indice</A>
</BODY>
</HTML>