|
Made in |
DESCRIPTION | Domini virtuali con Apache | Live Discussion - Skill: 2- JUNIOR |
Sullo stesso computer è possibile ospitare diversi siti fra loro indipendenti. Apache prevede diversi metodi per per farlo: - User Home (tutte le home vengono visualizzate tramite la direttiva UserDir) - Istanze multiple di Apache (Più Apache, anche di versioni diverse, installati e in esecuzione sulla stessa macchina) - VirtualHost Ip-based (Più domini virtuali su IP diversi) - VirtualHost Name-based (Più domini virtuali sullo stesso IP) |
||||
Il metodo più utilizzato per erogare più servizi con Apache è quello di creare dei VirtualHost IP o name based. Ovvero tramite sullo stesso server è possibile creare virtualmente tanti host quanti sono i servizi (siti) che devono essere erogati. IP-Based Ad ogni Host virtuale corrisponde un IP differente. Soluzione comoda ma poco utilizzabile quando si hanno molti domini virtuali da usare, per l'inutile spreco di indirizzi IP. Name-Based Apache supporta anche il virtual-hosting basato sul nome del server e non sull'IP, quindi più virtual-host Name based possono puntare allo stesso indirizzo IP. Questo richiede l'utilizzo del protocollo HTTP version 1.1, per cui non funziona con browser molto vecchi. Il vantaggio rispetto all'IP-based è proprio quello di risparmiare indirizzi IP, in quanto è possibile avere anche migliaia di domini con lo stesso indirizzo.
|
DESCRIPTION | Ip-Based virtual Hosting | Live Discussion - Skill: 3- INTERMEDIATE |
Il vantaggio del virtual hosting basato su IP è che ogni virtual host corrisponde ad un IP e non ha bisogno di essere identificato con un nome, inoltre viene supportato anche dai vecchi browser che non supportano il protocollo HTTP/1.1. | ||||
Lo svantaggio è che per ogni dominio avremo bisogno di un differente IP. A livello di configurazione bisogna specificare su quali indirizzi e quali porte il server Apache deve rimanere in ascolto. La direttiva per identificare l'indirizzo IP è BindAddress e la porta Port: BindAddress * Rimane in ascolto su tutte le interfaccePort 80 alla porta 80Una possibile altrenativa è la direttiva Listen che permette di specificare porta ed indirizzo IP sulla stessa linea di configurazione: Listen 192.168.208.3:80 Apache binda la porta 80 all'ip 192.168.208.3oppure BindAddress 192.168.208.4 Viene bindato l'indirizzo 192.268.208.4Listen 80Listen 443 sia alla porta 80 che 443La direttiva che definisce il VirtualHost nel file di configurazione è VirtualHost <VirtualHost IP:PORT> I primary Object utilizzati per definire le proprietà di un VirtualHost sono: ServerAdmin La e-mail dell'amministratore del serverweb ServerName Il canonical name per il virtualhost DocumentRoot Path dove risiedono file HTML, immagini e contenuti del sito da rendere disponibili ErrorLog Il log degli errori CustomLog Il log sui file trasferiti Esempio: <VirtualHost 192.168.208.3:80 > Ognuna di queste direttive tranne ServerName verrebbe ereditata dalla configurazione principale, ma si preferisce per ovvi motivi (non mischiare i log, avere piu' ServerAdmin etc...) definire nuovi parametri per ogni Virtualhost. |
DESCRIPTION | Name-Based Virtual Hosting | Live Discussion - Skill: 3- INTERMEDIATE |
L'alternativa al virtual hosting basato su IP è quello Name-based, cioè con più domini condivisi sullo stesso IP. Apache esaminando l'header "Host:" (es: Host: www.dominio.com) inviato dal client interpreta di conseguenza la richiesta, ed eroga il servizio relativamente all'Host richiesto. Questa procedura è valida solo se il client supporta il protocollo HTTP/1.1. | ||||
A livello di configurazione la differenza fra il virtual host IP-based e name-based è SOLO la direttiva NameVirtualHost che va aggiunta alla conf generale per identificare l'IP utilizzato dai vari virtual host, il resto è identico, compresa la sintassi della direttiva container VirtualHost e il suo contenuto. E' possibile avere più IP a cui sono associati più domini virtuali. Per esempio: Prima Dichiarazione dell'IP per i Virtual Host NameVirtualHost 192.168.208.2 Inizializzazione del primo Virtual Host <VitualHost 192.168.208.2> Inizializzazione del secondo Virtual Host sullo stesso IP <VirtualHost 192.168.208.2> Seconda Dichiarazione dell'IP per altri Virtual Host NameVirtualHost 192.168.208.3 Inizializzazione di nuovi VirtualHost sul secondo IP <VirtualHost 192.168.208.3> La direttiva NameVirtualHost "cattura" tutte le richieste per l'IP specificato e tramite il confronto fra l'header Host: e la direttiva ServerName o ServerAlias deduce quale risorsa è stata richiesta, se in nessun caso si ha un matching il server risponde con un errore. ServerAlias La direttiva server Alias permette come nella direttiva ServerName di settare il nome a cui dovrà rispondere il virtualhost ma con la differenza che si ha la possibilità di utilizzare i wildcard characters * e ? . Per esempio: <VirtualHost 192.168.208.2> In questo caso questo Virtualhost risponderà sia per www.coresis.com che per www.coresis.it |
TIPS | Gestione dei VirtualHost su file separati di configurazione | Live Discussion - Skill: 3- INTERMEDIATE |
Per facilitare la gestione dei virtual host, per permettere l'aggiunta di nuovi domini virtuali ad amministratori che non dovrebbero avere accesso al file di configurazione generale o per qualsiasi simile necessità, è consigliabile inserire la parte di configurazione riguardante i virtual host su file separati. | ||||
Tramite la direttiva Include possibile includere nel file di configurazione principale httpd.conf file contenenti ulteriori direttive. Aggiunge alla direttiva principale, tutte le direttive scritte nel file indicato Include conf/vhost.conf E' possibile anche usare wildcard ed inserire diversi file intere directory: Include conf/*.conf Il caso sopra citato è comodo anche per attivare o disabilitare intere parti di configurazione rinominando semplicemente il nome del file, facendo in modo che non concluda con .conf Ricordarsi che ogni modifica nel file di configurazione principale o nei vari file inclusi tramite la direttiva Include richiede l'avvio del server web per essere resa operativa. |
TIPS | Dynamic VirtualHosting | Live Discussion - Skill: 4- ADVANCED |
Apache può gestire un'infinità di virtual host, e prevede strumenti per la gestione automatica di un gran numero di domini virtuali, che rende estremamente comoda la vita di grandi provider, registrar e chiunque si ritrova a gestire più di poche decine di domini virtuali su un singolo server. | ||||
Fondamentalmente sono utilizzabili 3 diversi metodi, tramite tre moduli. - mod_rewite - mod_perl (script perl) - mod_vhost_alias MOD_REWRITE Tramite la direttive gestite dal modulo mod_rewrite è possibile configurare dinamicamente dei virtual host name-based. Abilitazione del modulo mod_rewrite In questo caso se il client richiede http://www.openskills.info/index.php le rule di rewrite convertiranno la richiesta per accedere alla risorsa che risiederà in /home/www/openskills.info/index.php. Il vantaggio di utilizzare questo metodo è che non bisogna riavviare Apache per aggiungere un virtualhost ma semplicemente aggiungere la entry nel prorio DNS. Lo svantaggio, come con tutti i domini virtuali name based, è che può funzionare solo con i browser che utilizzano il protocollo HTTP/1.1 e che ogni dominio deve poter essere risolto con il dns. MOD_PERL E' possibile tramite il linguaggio di programmazione perl scrivere un piccolo script da includere nel file httpd.conf fra i tag <perl> . Esempio: Apertura del tag perl ed inizializzazione dello script da includere nel file httpd.conf <Perl> Il passo successivo è quello di creare il file di configurazione /usr/local/apache/conf/vhost-perl.conf secondo la seguente sintassi: IP(:port), hostname,ServerAdmin,document root, aliases Esempio: 213.198.151.253:80, openskills.info, [email protected] /home/www/openskills MOD_VHOST_ALIAS La configurazione base per i virtualhost name-based è la seguente: UseCanonicalName off Invece per i virtualhost ip-based: UseCanonicalName DNS Dove %0 è l'hostname dedotto dall'host header inviato dal client nel primo caso e nel secondo è il risultato della query effettuata al DNS. Inoltre è possibile affiancare altre direttive per completare la configurazione di un virtualhost: -VirtualDocumentRootIP E' possibile identificare la document root attraverso l'IP piuttosto che con il nome dell'host. VirtualDocumentRootIP /home/www/%0 Dove %0 è l'IP dell'host, quindi l'url verrà rimappata in /home/www/213.198.151.253 nel caso di openskills.info. -VirtualScriptsAlias e VirtualScriptsAliasIP per specificare le directory dove risiedono i CGI: VirtualDocumentRoot /home/www/%0/html o VirtualDocumentRootIP /home/www/%0/html -ScriptAliasMatch Direttiva simile a VirtualScriptsAliasIP e VirtualScriptsAlias che permette di definire una singola directory contenente cgi-script per tutti i virtual host: ScriptAliasMatch /cgi/bin /home/www/.*/cgi-bin/
|
TIPS | Elenco delle direttive non permesse nei VirtualHost | Live Discussion - Skill: 3- INTERMEDIATE |
Un piccolo elenco delle direttive che non avrebbe senso mettere nella configurazione di un virtual host con la relativa spiegazione. | ||
ServerType Direttiva che determina se Apache è un demone standalone o gestito da inet e richiede per forza di cose di essere inserito nella "global section". I parametri di avvio cambiano a seconda del ServerType. StartServers, MaxSpareServers, MinSpareServer e MaxRequestsPerChild Tutte queste direttive controllano tutti i processi di Apache per le singole richieste ma è esclusa qualsiasi tipo di correlazione a singoli virtualhost poiché i vari child sono indifferentemente usati da Apache per gestire richieste a virtual host diversi. BindAddress, Listen La configurazione principale richiede un IP e una porta per stabilire a quale indirizzo Apache deve rimanere in ascolto, nella configurazione dei singoli virtualhost il binding dell'indirizzo avviene secondo criteri e direttive diverse. ServerRoot Direttiva che definisce il path delle configurazioni o di altre risorse in comune a tutti i virtualhost. PidFile File contenente il process ID del main server, poiché il file è settabile solo dal main server e non esiste una correlazione virtual-host/processi, deve essere definita nella global section. TypesConfig Indica il nome del file MIME Type, per definizione è settabile solo nella configurazione globale. NameVirtualHost Definisce l'IP da relazionare ai virtualhost name-based e quindi non avrebbe senso definirlo nelle configurazione dei singoli virtual host. |
TIPS | Listen Vs BindAddress | Live Discussion - Skill: 3- INTERMEDIATE |
Con la direttiva Listen si possono specificare due opzioni: l'IP e la porta o solo una delle due ma senza aver la possibilità di utilizzare gli hostname, invece la direttiva BindAddress accetta sia gli ip che gli hostname (configurazione sconsigliata) ma senza la possibilità di specificare la porta. | ||
Per specificare la porta occorre affiancare alla direttiva BindAddress o la direttiva Listen o la direttiva Port. Per esempio: BindAddress 213.198.151.253 coincide con: Listen 213.198.151.253:80 e con: BindAddress 213.198.151.253 la documentazione ufficiale di Apache raccomanda di usare Listen in quanto le direttive Port e BindAddress sono destinate all'obsolescenza. |
TIPS | Virtual Host e DNS lookups | Live Discussion - Skill: 3- INTERMEDIATE |
La direttiva VirtualHost accetta sia i canonical name che gli indirizzi IP, ma per evitare problemi di sicurezza e di performance è bene utilizzare sempre gli IP. |
||
Anche se è proprio la direttiva VirtualHost a configurare a quale indirizzo IP o nome dovrà rispondere il Virtualhost è consigliato mettere sempre l'IP e la porta a cui deve rispondere, sarà proprio la direttiva ServerName che eviterà al server Apache di lanciare inutili query al DNS per scoprire la corrispondenza IP e nome VirtualHost. |
BOFH | ulimit -S -n 1024 | Live Discussion - Skill: 4- ADVANCED |
Questo comando permette di alzare il numero massimo di file che un applicativo o un utente possono aprire contemporaneamente. | ||
Esistono casi reali in cui questo limite può essere raggiunto. Per esempio su sistemi con un Apache che gestisce una gran quantità di siti, per i quali deve aprire i relativi log indipendenti. Il parametro va reimpostato ad ogni avvio, alcune distribuzioni prevedono un file di configurazione predefinito per impostare "limits" come questo. Per visualizzare tutti i parametri [neo@dido neo]$ ulimit -a core file size (blocks) 0 data seg size (kbytes) unlimited file size (blocks) unlimited max locked memory (kbytes) unlimited max memory size (kbytes) unlimited open files 1024 pipe size (512 bytes) 8 stack size (kbytes) 8192 cpu time (seconds) unlimited max user processes 2047 virtual memory (kbytes) unlimited |
Openskills LiveBook: Apache - Installazione e configurazione | (C)oresis Srl | GNU FDL licence | Generated: 23/10/2003 |