back to top

Virtual hosting: configurare diversi siti web su Apache2

Nella precedente lezione abbiamo visto come installare e configurare Apache. In questa lezione vediamo come è gestita, dal web server, la configurazione dei singoli siti web, partendo – ovviamente – da quello di default.

Il sito web di default

Dopo aver terminato l’installazione avevamo visto come, digitando l’ip del server all’interno del browser, fosse già presente una pagina web, che ci avvisava della corretta installazione di Apache2. Questo ci dice che è già presente di default una pagina web. Il percorso fisico predefinito dove risiede il file index.html che vediamo richiamato è il seguente:

/var/www/html

Questo percorso di default è definito nel file di configurazione che troviamo nella cartella sites-available, come spiegato precedentemente. Possiamo accertarcene andando a leggere il suddetto file. Per farlo spostiamoci nella cartella contenente le configurazioni dei vari siti presenti nel nostro sistema:

cd /etc/apache2/sites-available/

Dopodichè apriamo il file di configurazione di default utilizzando l’editor di testo nano:

nano 000-default.conf

Come vediamo, oltre al percorso (indicato in DocumentRoot), sono presenti anche alcune delle altre direttive viste prima. Se il nostro web server dovrà contenere solamente un sito web possiamo lasciare le impostazioni predefinite. Sarà infatti sufficiente cancellare il file /var/www/html/index.html e sostituirlo con i file che costituiscono il nostro sito.

Aggiungere nuovi siti web: il Virtual Hosting

Abbiamo visto come configurare un sito sul nostro web server Ubuntu. Capita spesso, però, di imbattersi nella necessità di avere più siti web sullo stesso server, pur avendo disponibile un solo indirizzo IP pubblico. Per far fronte a questa necessità, ci viene in aiuto quello che viene definito Virtual Hosting, ovvero la possibilità di eseguire più siti web su di un unico server. Gli host virtuali possono essere:

  • IP-based: abbiamo un indirizzo IP per ciascun sito web;
  • name-based: abbiamo più nomi che rimandano allo stesso indirizzo IP.

In entrambi i casi l’intera struttura è completamente trasparente per i client: il fatto che più siti girino sulla stessa macchina fisica non è visibile dall’utente finale.

Creare un nuovo Virtual Host

Quella che considereremo nel nostro esempio, è la configurazione tipica, cioè quella name based. In pratica andremo a dire al nostro server Apache di distinguere il sito web da restituire al client in base allo specifico hostname interrogato. I passaggi da fare sono: creare una cartella dove andare a mettere il nuovo sito, aggiungerlo nella directory sites-available, configurarlo e poi abilitarlo.

Andiamo a creare la cartella dove risiederà il nostro nuovo sito web:

sudo mkdir /var/www/sitonuovo.com

creiamo, al suo interno, la cartella log dove andare a registrare i log del sito, distinguendoli da quelli di altri siti:

sudo mkdir /var/www/sitonuovo.com/log

Per la configurazione possiamo copiare e modificare quello di default oppure crearne uno nuovo da zero (il nome deve sempre terminare con .conf). Nel mio caso andrò a creare, all’interno della cartella contenente i file di configurazione dei vari VH, un file di testo col nome "sitonuovo.com.conf":

sudo nano /etc/apache2/sites-available/sitonuovo.com.conf

All’interno del nostro editor andremo poi a scrivere le direttive principali:

<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName www.sitonuovo.com
    ServerAlias sitonuovo.com

    DocumentRoot /var/www/sitonuovo.com

    LogLevel warn
    ErrorLog /var/www/sitonuovo.com/log/error.log
    CustomLog /var/www/sitonuovo.com/log/access.log combined
</VirtualHost>

Abilitare e disabilitare siti web su Apache2

Non ci rimane quindi che abilitare il sito con il comando:

sudo a2ensite sitonuovo.com

Questo creerà il collegamento simbolico in sites-enabled al file di configurazione del sito che abbiamo scritto precedentemente in sites-available.

Come al solito perché le modifiche siano rese effettive riavviamo il servizio:

sudo /etc/init.d/Apache2 restart

Se in seguito volessimo disabilitare il sito il comando è:

sudo a2dissite sitonuovo.com

Questa operazione può essere ripetuta per ogni sito che vogliamo aggiungere al nostro server web. Naturalmente, prima che il sito sia effettivamente visibile sul web dobbiamo configurare i DNS del nostro dominio aggiungendo i record necessari e aprire le porte usate dal sito web tramite il firewall che gestisce il traffico della rete del nostro server.

Pubblicitร