Home / Indice sezione | www.icosaedro.it | ![]() |
Implementare in Apache il meccanismo degli host virtuali basati sul nome del dominio. Esempi usando un singolo PC, anche privo di connessione di rete.
Introduzione
Materiali necessari
Creiamo gli utenti
Creiamo i dominii
Configuriamo i dominii in Apache
Riavviamo Apache
Verifichiamo il tutto
Apache include il supporto per gli host virtuali basati sul nome di dominio, previsti dal protocollo HTTP versione 1.1. In sintesi si tratta di questo: con un solo server WEB e un solo indirizzo Internet, si possono comunque ospitare un numero arbitrario di siti WEB indipendenti. La gran parte dei siti WEB sono realizzati con questa tecnica. Si risparmia sui materiali (basta un solo computer), sugli indirizzi Internet (ne basta uno), sugli oneri di amministrazione (basta un solo WEB administrator per un numero arbitrario di siti ospitati, almeno in teoria).
Ci serve un computer con Apache installato. Una qualsiasi distribuzione di
Linux dovrebbe avere gia' installato il server, per cui non mi dilunghero'
su questo. Non serve disporre di un collegamento di rete, e neppure serve
avere un collegamento Internet. Per le nostre prove basta un computer
isolato. L'indirizzo IP del nostro host sara' l'indirizzo di loopback
127.0.0.1 che e' preconfigurato su ogni macchina sulla interfaccia di
rete virtuale "lo
". Il comando ifconfig
ce lo
conferma:
$ ifconfig
lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:4968731 errors:0 dropped:0 overruns:0 frame:0 TX packets:4968731 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:383333456 (365.5 Mb) TX bytes:383333456 (365.5 Mb)
Per ogni dominio creiamo un utente distinto: in questo
modo il WEB manager, il WEB designer e tutti gli altri soggetti coinvolti
nella gestione del sito WEB di quel dominio potranno lavorare come utenti
distinti, accedere in FTP al proprio account e senza interferire con
gli altri. Nei nostri esempi creeremo gli utenti tizio
e caio
. Per creare tizio facciamo questo:
# useradd tizio -g users # passwd tizio Changing password for user tizio New UNIX password: ****** Retype new UNIX password: ****** passwd: all authentication tokens updated successfully # chmod u=rwx,g=,o=x /home/tizio # mkdir /home/tizio/public_html # chown tizio:users /home/tizio/public_html # chmod u=rwx,g=,o=x /home/tizio/public_html
Dunque, abbiamo creato un utente tizio nel solito modo. Notare che abbiamo assegnato esplicitamente il nuovo utente al gruppo "users": questo devia dallo schema generale della distribuzione Red Hat, che per default crea un nuovo gruppo per ogni utente. Nella home dir. del nuovo utente abbiamo creato una sotto-directory public_html che conterra' il sito WEB. La particolarita' da notare e' che le directory create consentono l'attraversamento grazie al flag x: in questo modo Apache puo' raggiungere le pagine WEB. La sotto-directory public_html sara' utile quando l'utente tizio vorra' collocare nel proprio account programmi e informazioni riservate che non vuole siano raggiungibili attraverso il WEB. Ricordiamoci la password assegnata, che dovremo riferire al sig. Tizio!
ATTENZIONE! |
---|
Il modello di sicurezza per i permessi dei file e delle directory
non è l'unico possibile, ma forse è il più semplice
da applicare e da gestire. Lascia tuttavia qualche perplessità
il dover rendere accessibile a "other" la propria home directory.
Esiste almeno un'altra soluzione che si basa sulla creazione di un gruppo
per ciascun utente, paradigma scelto per default dalla distribuzione
Red Hat. Le home directory degli utenti vanno poi rese attraversabili
dal proprio gruppo. L'utente del server ( |
Poiche' dobbiamo esercitarci, e non vogliamo coinvolgere
i veri DNS, ci bastera' aggiungere queste due righe al file
/etc/hosts
:
127.0.0.1 www.tizio.casa 127.0.0.1 www.caio.casa
Individuare il file di configurazione di Apache
httpd.conf
. Nella distribuzione Red Hat 6.2 e 7.1 si
trova in /etc/httpd/conf/httpd.conf
, mentre in Slackware 10.0
si trova in /etc/apache/httpd.conf
.
Al termine di questo file c'e' la sezione destinata agli host virtuali.
Assicurarsi che sia presente la direttiva
NameVirtualHost 127.0.0.1:80
che attiva la funzionalita' degli host virtuali sulla solita porta
80 del nostro server. Creiamo il virtual host per il dominio
www.tizio.casa
:
<VirtualHost 127.0.0.1:80> ServerName www.tizio.casa DocumentRoot /home/tizio/public_html ServerAdmin tizio@localhost CustomLog logs/www.tizio.casa-access_log common ErrorLog logs/www.tizio.casa-error_log </VirtualHost>
Per gli altri domini virtuali si creeranno altrettanti utenti e altre sezioni VirtualHost similari, facendo attenzione a modificare di conseguenza il dominio, il path e l'indirizzo di posta, evidenziati in grassetto nell'esempio. Come ServerAdmin ho indicato in realta' l'utente tizio invece che il vero WEB administrator: di solito i problemi legati a un sito WEB sono locali a quel sito (pagine mancanti, CGI non funzionanti, ecc.) piuttosto che responsabilita' del WEB administrator.
Il comando da dare su Red Hat 6.2 e'
# /etc/rc.d/init.d/httpd restart
mentre su Red Hat 7.1 e 7.3 e'
# /etc/init.d/httpd restart
su Slackware 10.0 e':
# /etc/rc.d/rc.httpd restart
Se qualcosa e' andato storto, c'e' sempre il log file
in /var/log/httpd
(per Red Hat) oppure in
/var/log/apache
(in Slackware).
Mentre facciamo le varie prove, e' bene aprire un terminale sul quale
visualizzare con continuita' tutti i messaggi dei log, perche' sono molto
utili. Il comando tail -f -n 1 *
dato nella directory dei log
fa al caso nostro.
Se e' tutto ok, puntiamo il WEB browser sull'URL
http://www.tizio.casa/index.html
: ci siamo dimenticati di
creare la home page /home/tizio/public_html/index.html
,
provvedere! Un testo come questo e' piu' che sufficiente:
<HTML> <BODY> Home page di Tizio </BODY> </HTML>
Ricordare che questo file deve appartenere a Tizio e abbia i permessi giusti. Eventualmente, se si lavora da root, dare i comandi:
# cd /home/tizio/public_html # chown tizio:users index.html # chmod u=rw,g=,x=r index.html
Questi permessi sono i minimi necessari per consentire ad Apache di leggere il file, e all'utente Tizio per poterlo modificare.
In una situazione realistica avremo che i domini www.tizio.casa
e www.caio.casa saranno registrati su un qualche DNS (e non nel
nostro file /etc/hosts
), e l'indirizzo IP da assegnare ai
VirtualHost sara' l'indirizzo pubblico assegnato alla nostra macchina
(e non l'indirizzo di loopback 127.0.0.1).
Umberto Salsi | Commenti | Contatto | Mappa | Home / Indice sezione |
Still no comments to this page. Use the Comments link above to add your contribute.