L’hosting virtuale non è altro che il metodo che consente ad un server fisico di ospitare più di un dominio (per esempio, sito1.com, sito2.com). L’hosting virtuale è prevalentemente presente negli ambienti condivisi del web hosting, dove possono essere collocati centinaia o più siti web o blog e sono confezionati in un unico server dedicato per ammortizzare i costi di manutenzione del server.
Tu non sei una società di web hosting? Non preoccupatevi, l’hosting virtuale può essere utile anche a voi. Ad esempio, è possibile inserire più siti web su un tuo VPS che si affitta, risparmiando sul costo. Per servire più domini su un VPS, è sufficiente configurare molti host virtuali sul proprio server web, e basta puntare i domini sull’indirizzo IP statico del vostro VPS.
Grazie alla sua utilità, l’hosting virtuale è supportato da tutti i moderni software di web server come Apache, Nginx, Lighttpd, IIS. In questo tutorial, vi mostrerò come creare e attivare gli host virtuali in Apache HTTP server in ambiente Linux. C’è una leggera differenza nella configurazione tra i sistemi basati su Debian e su Red Hat. La differenza verrà mostrata successivamente.
Prima di iniziare, suppongo che abbiate già installato il server Apache sul vostro server linux. Come esercizio, creiamo un host virtuale per il dominio abc.com sul server web Apache.
Fase uno: creare la directory root per il dominio Abc.com
Iniziamo con la creazione di una cartella che conterrà le pagine web per il sito web abc.com. Questa directory è denominata “document root” per il dominio. Seguendo la prassi comune, cerchiamo di organizzare tutte le directory principali del documento in /var/www, e denominarli dopo con i domini corrispondenti. Inoltre, bisogna creare una directory di log dedicato ad abc.com in /var/log.
sudo mkdir /var/www/abc.com
$ sudo mkdir /var/log/apache2/abc.com (Debian, Ubuntu, Mint)
$ sudo mkdir /var/log/httpd/abc.com (Fedora, CentOS, RHEL)
Adesso andremo a creare una pagina web di test per il dominio
sudo vi /var/www/abc.com/index.html
This page is powered by Apache Virtual Host
Adesso bisogna cambiare la proprietà della cartella di root dell’utente che fa avviare il web server Apache.
Per i sistemi basati su Debian
sudo chown -R www-data:www-data /var/www/abc.com
Per i sistemi basati su Fedora, CentOS, RHEL
sudo chown -R apache:apache /var/www/abc.com
Fase due: creiamo un file host virtuale
Il passo successivo consiste nel creare un file di configurazione dell’host virtuale per abc.com. Il nome di ogni file di configurazione deve terminare con .conf. La posizione più comune dove mettere le configurazioni degli host virtuali è il seguente:
Debian, Ubuntu or Linux Mint: /etc/apache2/sites-available/
Fedora, CentOS or RHEL: /etc/httpd/conf.d
Creiamo ora un file host virtuale per abc.com.
Su Debian, Ubuntu o Linux Mint
sudo vi /etc/apache2/sites-available/abc.com.conf
Su Fedora, CentOS o RHEL
sudo vi /etc/httpd/conf.d/abc.com.conf
Ecco un esempio di file host virtuale.
Su Debian, Ubuntu o Linux Mint:
ServerName abc.com
ServerAlias www.abc.com
ServerAdmin webmaster@abc.com
DocumentRoot /var/www/abc.com
CustomLog /var/log/apache2/abc.com/access.log common
ErrorLog /var/log/apache2/abc.com/error.log
Su Fedora, CentOS o RHEL:
ServerName abc.com
ServerAlias www.abc.com
ServerAdmin webmaster@abc.com
DocumentRoot /var/www/abc.com
CustomLog /var/log/httpd/abc.com/access.log common
ErrorLog /var/log/httpd/abc.com/error.log
Ancora più importante, il campo DocumentRoot deve puntare alla directory principale del documento corretto che abbiamo creato in precedenza. Inoltre, il nome di dominio deve essere specificato sul campo ServerName. Facoltativamente, un nome alternativo può essere specificato sul campo ServerAlias. Utilizzando i campi CustomLog e ErrorLog, è possibile creare i registri di accesso e di errore per questo dominio.
Se si desidera assegnare un indirizzo IP distinto (ad esempio, 172.20.30.41) al dominio, è possibile sostituire con . A seconda del caso d’uso, è possibile personalizzare ulteriormente il file di configurazione con altri campi disponibili in Apache HTTP server.
Solo per i sistemi basati su Debian (Debian, Ubuntu o Mint): dopo aver creato una configurazione dell’host virtuale, è necessario abilitarlo:
sudo a2ensite abc.com.conf
Fase tre: Ricarica del Server Apache HTTP
Una volta creata una nuova configurazione dell’host virtuale, si consiglia di verificare la configurazione della sintassi. Il seguente comando è in grado di rilevare un qualsiasi errore di sintassi nella configurazione.
apache2ctl -t
Su Fedora, CentOS o RHEL:
httpd -t
Se non c’è alcun errore di sintassi nella configurazione, si vedrà come risposta del terminale “Sintax OK”.
Dopo che è stato effettuato il test della sintassi, non dobbiamo dimenticarci di ricaricare Apache HTTP server, in modo che la nuova configurazione abbia effetto:
Su Debian, Ubuntu o Linux Mint:
sudo service apache2 reload
Su Fedora, CentOS o RHEL:
sudo systemctl reload httpd.service
Fase quattro: Regoliamo il firewall
Questo è un passaggio facoltativo, necessario nel caso in cui si esegue un firewall con la DROP policy sul server (ad esempio, nei sistemi basati su Red Hat). Se si è installato ed avviato il firewall, è necessario aprire la porta HTTP utilizzata dall’host virtuale.
Se si utilizza iptables:
sudo iptables -A INPUT -p tcp -m tcp –dport 80 -j ACCEPT
$ sudo /etc/init.d/iptables save
Se usiamo, invece, FirewallD:
sudo firewall-cmd –permanent –zone=public –add-service=http
$ sudo firewall-cmd –reload
Fase cinque: Configurazione dei DNS per l’host virtuale
Infine, è necessario puntare abc.com all’indirizzo IP del server web. Questo può essere fatto con l’aggiunta di un record DNS corrispondente per il server DNS del soggetto che distribuisce l’indirizzo IP. Il passo effettivo varia da chi distribuisce l’indirizzo IP. Se si ottiene un indirizzo IP da una società di VPS, l’azienda dovrebbe fornire un modo per registrare “un record” per il dominio a cui viene assegnato il vostro VPS.
Se si desidera testare semplicemente un nuovo host virtuale senza creare un record DNS per abc.com, un semplice modo è quello di aggiungere domain-to-IP mapping a /etc/hosts.
Vale a dire, che se si desidera far accedere un computer ad abc.com bisogna aggiungere la seguente riga al file /etc/hosts:
abc.com
Questo essenzialmente farà pensare al computer configurato che abc.com esiste, e che sia associato un , senza dover configurare un record DNS pubblico per abc.com.
Ora sul computer client basterà aprire una finestra del browser Web, e andare sul sito http://abc.com. Se tutto funziona, questo vi indirizzerà alla pagina di test per abc.com che abbiamo creato in precedenza.
Conclusione
In questo tutorial, vi ho mostrato la procedura passo-passo per creare e abilitare un host virtuale su Apache HTTP server. Si può facilmente ripetere il processo per tutti i domini che si desiderano. Come si può vedere, l’hosting virtuale è una caratteristica piuttosto attraente, e vi dà la possibilità di ospitare più domini contemporaneamente personalizzandoli per ogni singolo server web.