Les vHosts sous Apache2
Sommaire
I. Présentation
Dans ce tutoriel, nous allons apprendre à mettre en place des virtuals hosts sous le service web Apache 2.
Les virtuals hosts permettent d'héberger plusieurs sites web sur un même serveur. Par exemple, la requête site1.neaj.fr et site2.neaj.fr amèneront sur deux contenus différents mais ceux-ci seront hébergés sur le même serveur.
II Principe de fonctionnement
Il est important de savoir que les vHosts ne peuvent être mis en place uniquement si un système DNS existe déjà. Le serveur DNS aura pour fonction de rediriger les requêtes site1.neaj.fr et site2.neaj.fr sur le même serveur grâce aux enregistrements CNAME qui sont des enregistrements orientant un nom vers un autre nom.
Dans notre exemple, il existera une entrée www.neaj.fr et les requêtes site1.neaj.fr et site2.neaj.fr seront redirigées vers www.neaj.fr . C'est ensuite les vHosts qui agiront pour afficher le site1 ou le site2 en fonction de la requête reçue.
Voici un schéma qui illustre le fonctionnement des vHosts et le traitement des requêtes par le serveur DNS :
Nous voyons bien que le DNS oriente deux requêtes vers le même serveur et que celui-ci affiche un site ou un autre en fonction de la requête reçue.
III. Mise en place du serveur Apache2
Nous allons commencer par installer le serveur Apache2 sur notre serveur web ainsi que php5 qui est utile à la plupart des sites webs:
apt-get update apt-get install apache2 php5
Nous allons ensuite commencer la construction de nos vHost, pour l'exemple nous sommes sur le domaine neaj.fr et les sites se nommeront site1.neaj.fr et site2.neaj.fr
cd /var/www mkdir site1 site2 cp index.html site1/ ;cp index.html site2/
Pensez à changer le contenu des index.html de site1 et site2 pour que la différence dans la navigation des sites soit visible. Vous pouvez par exemple ajouter "Ceci est le site1" sur l'index.html du site1 et "Ceci est le site2" sur l'index.html du site2.
VI. Construction des vHosts
Il faut maintenant indiquer à Apache que selon la requête qu'il reçoit, il renverra tel ou tel contenu.
Il faut pour cela se rendre dans le répertoire de gestion des sites d'Apache2:
cd /etc/apache2/sites-available
Ensuite, nous devons créer un fichier par vHost, cela simplifie grandement leur gestion. commençons par le site1
vim site1.neaj.fr
Nous devons y mettre ce contenu qui est le strict minimum pour la création d'un vhost
Les fichiers de configurations des vHosts n'aiment pas vraiment les commentaires, il est préférable de ne pas en mettre dans ces fichiers. Si vous souhaitez tout de même en mettre, mettez les sur des lignes à part et non en fin de lignes utiles.
Une fois ceci fait, il faut faire de même pour le site2, vous n'avez alors qu'a créer le fichier site2.neaj.fr dans /etc/apache2/sites-available/ et remplacer site1 par site2 dans le contenu du fichier.
Assurez vous que votre DNS fera bien son travail de redirection. Voici à quoi ressemble mon fichier db.neaj.fr dans mon serveur DNS Bind9.
Les lignes qui nous intéressent au niveau de la construction des vHost sont les trois dernières lignes.
- www IN A 192.168.0.102 : ici, les requête www.neaj.fr sont redirigées vers l'IP de mon serveur web 192.168.0.102
- site1 IN CNAME www : ici, les requêtes allant vers le site1 sont redirigées vers www (qui est redirigé vers 192.168.0.102).
- site2 IN CNAME www : ici, c'est le même principe que la ligne précédente.
Les requêtes site1.neaj.fr et site2.neaj.fr seront donc bien redirigées vers le même serveur.
Pour finir, il faut autorisé les vHosts dans Apache2 avec les commandes suivantes :
a2ensite site1.neaj.fr a2ensite site2.neaj.fr
La commande "a2ensite" a pour fonction de mettre votre site dans /etc/apache2/sites-enabled qui sont les sites autorisés à l'affichage.
Une fois ces commandes passées, vous verrez l'annonce suivante :
Il faut donc reloader le service Apache2 pour que tout soit bien pris en compte.
Il est préférable d'effectuer un test avec de passer définitivement à la validation des changements. Si d'autres services utilisant apache sont en route, cela évitera que ceux-ci deviennent indisponible à cause du non redémarrage d'Apache2.
apachectl configtest
Si le message suivant apparait, vous pouvez passer au reload de votre service Apache2:
service apache2 reload
V. Tester les vhosts
Pour tester vos vHosts, il faut vous assurer que le client sur lequel vous êtes utilise bien le bon DNS (celui qui contient les CNAME).
Ensuite il vous suffit d'entrer dans votre navigateur l'URL de vos vHosts comme suivant :
Pour être sur que votre DNS agit comme il faut au niveau de la redirection, vous pouvez utiliser la commande nslookup comme suivant :
Nous voyons ici que les requêtes site1.neaj.fr et site2.neaj.fr se redirigent bien vers www.neaj.fr.