Configurer Apache pour qu’il gère plusieurs noms de domaines différent sur le serveur

Dans ce tutorial, nous allons voir comment configurer Apache pour que plusieurs domaines soient utilisés sur le même serveur. Ainsi, on peut héberger plusieurs sites sur la même machine, de son coté le visiteur ne se rend compte de rien et pourtant plusieurs site sont sur la même machine.

Nous allons donc éditer le fichier httpd.conf qui se trouve dans /etc/apache/

cd /etc/apache

vi httpd.conf

Hôtes virtuels

Nous allons nous servir de la fonction virtual host (hote virtuel) d’apache afin de pouvoir gérer plusieurs domaines avec une seule instance d’apache. Grâce à la nouvelle norme http 1.1 qui est implémenté sur tous les navigateurs, le nom du site voulu accompagne l’entête Host du protocole http. Un serveur Apache qui reçoit cette entête peut donc savoir quel est le nom de domaine à visiter sur l’adresse IP de l’hébergement. Du coup nous pouvons hébergés autant de domaines que nous voulons.

Cette fonctionnalité d’apache s’appelle communément « hôte virtuel par nom », une autre technique « hôte virtuel par adresse » ne sera pas vu dans ce tutorial.

Les directives

Pour enclencher la fonctionnalité hôte virtuel par nom pour une adresse IP donné, nous devons utiliser la directive

NameVirtualHost adresseIP

Où adresse IP est une adresse IP ou un astérisque(* signifie toute les adresses), on peut aussi indiquer le port à surveiller en ajoutant :numeroport

Cette directive indique que pour l’adresse IP donné ou pour toutes les adresses IP (*), Apache doit recherche un nom dans les directives VirtualHost

La balise ouvrante VirturalHost doit contenir le nom de domaine concerné, par exemple

<VirtualHost www.votredomaine.com>

Pour répondre à des requêtes du type votredomaine.com ou sousdomaine.votredomaine.com vous devez ajouter la directive ServerAlias

ServerAlias votredomaine.com sousdomaine.votredomaine.com

Entre cette balise et la balise fermante </VirtualHost>, nous pouvons définir plusieurs directives et surtout des essentielles comme le chemin du site. En effet,il faut maintenant indiquer à Apache où se trouve la racine du site pour ce nom de domaine.

DocumentRoot /var/www/mondomaine.com/

La directive ServerName permet de renvoyer le nom du domaine (utile pour PHP par exemple)

ServerName www.mondomaine.com

Cette directive permet de définir le chemin des logs d’accès. On peut avoir ainsi un fichier log par domaine ce qui peut être pratique pour les stats et les donner à d’éventuels clients.

TransferLog /var/www/mondomaine.com/access.log

Voici donc un exemple complet :

<VirtualHost www.votredomaine.com>
ServerAlias votredomaine.com sousdomaine.votredomaine.com
DocumentRoot /var/www/mondomaine.com/
ServerName www.mondomaine.com
</VirtaulHost>

Et ceci pour autant de domaines que vous le souhaitez.