Questo articolo descrive come creare un Virtual Host su un web server Apache XAMPP nei sistemi operativi Windows, Linux e iOS.
Esistono almeno tre modi per ospitare più siti web sullo stesso web server:
- utilizzare un unico nome di dominio (es. localhost) e creare una cartella per ciascun sito: http://localhost/sito1/; http://localhost/sito2/; ecc.
- Creare dei sottodomini: http://sito1.localhost/; http://sito2.localhost/; ecc.
- Creare uno o più virtual host. Questa soluzione permette di utilizzare nomi di dominio diversi: http://sito1.it/; http://sito2.it/; ecc. In questo modo è possibile creare un sito di prova in locale che abbia lo stesso nome dominio del sito di produzione, con il vantaggio di non dover convertire il nome di dominio nel momento in cui si porta il sito dall’ambiente di sviluppo a quello di produzione.
Le attività da svolgere per creare un virtual host sono pressoché identiche per tutti tre i sistemi operativi:
- Associare il nome del sito alla directory del web server che ne conterrà le pagine.
- Associare il nome del sito all’indirizzo IP del web server.
Vediamo le attività di dettaglio per ciascun Sistema Operativo.
Creare un Virtual Host in ambiente Windows
Eseguire le seguenti attività sul computer dov’è installato il web server XAMPP Apache (nell’esempio il nuovo dominio sarà: miosito.it):
- aprire una finestra di comando (ad esempio premendo contemporaneamente il tasto Start (in basso a sinistra nella tastiera) e il tasto R e poi scrivendo “cmd”, seguito da invio;
- ottenere l’indirizzo IP del web server con il comando
ipconfig(ipotizziamo che l’indirizzo IP sia192.168.1.9); - creare una nuova cartella
\logsall’internoc:\xampp; - creare una nuova struttura di cartelle
\miosito\public_htmlall’interno dic:\xampp\htdocs; - creare un file
index.phpnella cartella\public_html, inserire il seguente codice quindi salvare il file:
<?php
echo '<h1 style="text-align:center; margin:20px auto;">Hello world!</h1>';
- aprire in modifica il file
C:\xampp\apache\conf\extra\httpd-vhosts.confed individuare il testo seguente:
<VirtualHost *:80>
ServerName localhost
DocumentRoot "C:\xampp\htdocs"
</VirtualHost>
- Inserire subito sotto al testo (o comunque in coda al testo già presente) le istruzioni per configurare il nuovo virtual host:
<VirtualHost *:80>
ServerName miosito.it
DocumentRoot "C:\xampp\htdocs\miosito\public_html"
ErrorLog "C:\xampp\logs\miosito-error_log"
CustomLog "C:\xampp\logs\miosito-access_log" common
</VirtualHost>
In questo modo abbiamo istruito il web server sulla cartella che conterrà le pagine del nuovo sito e su quali file di log dovrà registrare eventuali messaggi di errore relativi al nuovo sito.
- Riavviare il web server.
Sul computer che svolge il ruolo di client (dov’è installato il browser):
- aprire in modifica il file
C:\windows\system32\drivers\etc\hostsed inserire la seguente riga (dove 192.168.1.9 è l’indirizzo IP del web server ottenuto all’inizio della procedura):
192.168.1.9 miosito.it
- Avviare il browser e nella barra degli indirizzi inserire:
http://miosito.it - Se tutto è andato a buon fine, verrà visualizzata la scritta Hello World!
Cosa fare se non si riesce ad accedere a http://localhost
Adesso il web server ospita due siti: http://localhost (che ospita il sito di presentazione di XAMPP) e il nuovo http://miosito.it. Se http://localhost restituisce un errore 404 pagina non trovata, verificare che nel file C:\xampp\apache\conf\extra\httpd-vhosts.conf siano effettivamente presenti le seguenti istruzioni:
<VirtualHost *:80>
ServerName localhost
DocumentRoot "C:\xampp\htdocs"
</VirtualHost>
Se non sono presenti, aggiungerle e riavviare Apache.
Creare un Virtual Host in ambiente Linux
- Innanzitutto verificare se nel file di configurazione /opt/lampp/etc/httpd.conf del web server è presente una istruzione che includa il file di configurazione degli host virtuali; eventualmente aggiungere l’istruzione:
# Virtual hosts
Include etc/extra/httpd-vhosts.conf
- Aprire il file di configurazione /opt/lampp/etc/extra/httpd-vhosts.com e verificare che sia presente la configurazione dell’host predefinito (se nonpresente, inserire le seguenti righe):
# VirtualHost per localhost
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot "/opt/lampp/htdocs"
ServerName localhost
ErrorLog "logs/localhost-error_log"
CustomLog "logs/localhost-access_log" common
</VirtualHost>
Inserire le seguenti istruzioni dopo quelle di configurazione dell’host predefinito localhost:
<VirtualHost *:80>
ServerName miosito.it
DocumentRoot "/opt/lampp/htdocs/miosito"
ErrorLog "logs/miosito.it-error_log"
CustomLog "logs/miosito.it-access_log" common
</VirtualHost>
- Riavviare il web server
- Se il computer che svolge il ruolo di client monta anch’esso il sistema operativo Linux, aprire in modifica il file /etc/hosts ed inserire la seguente riga (dove 192.168.1.9 è l’indirizzo IP del web server):
192.168.1.9 miosito.it
Creare un Virtual Host in ambiente iOS
Quanto visto per Windows e Linux è valido anche per il Mac; i file di configurazione da modificare sono:
- /Applications/XAMPP/xamppfiles/etc/extra/httpd-vhosts.conf
- /private/etc/hosts
Appendice: come attivare porte multiple su Apache
Se si ha la necessità di attivare due siti di test su http://localhost e non si vuole ricorrere a sottocartelle (http://localhost/sito1 e http://localhost/sito2), è possibile attivare più porte sul webserver Apache.
Per attivare porte multiple su Apache di devono eseguire alcuni step:
- Aprire in modifica il file di configurazione httpd.conf (in una istallazione XAMPP si trova nella directory /opt/lamp/etc se in ambiente Unix o nella cartella C:\xampp\apache\conf se in ambiente Windows) ed aggiungere una ulteriore porta, oltre a quella predefina “80”, nella sezione “Listen”:
Listen 80
Listen 8080 // nuova porta 8080
- Inserire un nuovo virtual host, specificando la nuova porta sia come parametro della dichiarazione <virtualhost> sia nella definizione del Servername:
<VirtualHost *:8080>
ServerName localhost:8080
...
</VirtualHost>
- Riavviare il server Apache.
- Se si utilizza il Control Panel di XAMPP, verificare dopo il riavvio che la nuova porta compaia nella colonna Port(s) del server Apache.

0 commenti