Apache 2.4 sous Windows – Héberger plusieurs sites web avec les serveurs virtuels

Pour ceux qui souhaitent faire du développement web ou héberger des sites web, il est bien utile de pouvoir héberger sur une seule machine plusieurs sites web.

Dans cet article, je vais vous expliquer comment réaliser une telle configuration sous Apache 2.4 sous Windows 7 en utilisant les virtual hosts, en français serveurs virtuels. Il existe 2 configurations possibles, une par nom et une par IP, ici je ferai une configuration par nom. Cette configuration fonctionne également sous Windows 2008 R2.

Apache gère nativement les hôtes virtuels, il n’y a rien de particulier à activer.

Si vous regardez le contenu du fichier httpd.conf et que vous recherchez la chaine # Virtual hosts vous constatez qu’il y a la directive Include conf/extra/httpd-vhosts.conf indiquant que les serveurs virtuels sont définis dans le fichier httpd-vhosts.conf, vous pouvez également les définir directement dans le fichier httpd.conf.

Plantons un peu le décor.

Je vais mettre en place 5 sites web, 4 seront réellement mis en place, le dernier sera juste déclaré dans le DNS histoire de voir le comportement d’apache.

La configuration des serveurs virtuels se décompose en 3 étapes :
1. Créer les dossiers d’hébergement des différents sites
2. Déclarer les sites dans le DNS.
3. Configurer les serveurs virtuels.

1. Création des dossiers d’hébergement

Je crée les différents dossiers où seront placés les fichiers et les logs de chaque site comme décrit ci-dessous

Nom DNS Emplacement des fichiers
Site 1  www.site1.fr Fichiers : E:\serveur_web\www\site1
Logs : E:\serveur_web\apache24\logs\site1
Site 2  www.site2.fr Fichiers : E:\serveur_web\www\site2
Logs : E:\serveur_web\apache24\logs\site2
Site 3  www.site3.fr Fichiers : E:\serveur_web\www\site3
Logs : E:\serveur_web\apache24\logs\site3
Site 4  www.site4.fr Fichiers : E:\serveur_web\www\site4
Logs : E:\serveur_web\apache24\logs\site4
Site5 Aucun Aucun

Dans le dossier racine de chaque site je crée un fichier index.html.

Dossier racine Contenu
E:\serveur_web\www\site1 <HTML>
<HEAD>
<TITLE>Site 1</TITLE>
</HEAD>
<BODY>
SITE 1
</BODY>
</HTML>
E:\serveur_web\www\site2 <HTML>
<HEAD>
<TITLE>Site 2</TITLE>
</HEAD>
<BODY>
SITE 2
</BODY>
</HTML>
E:\serveur_web\www\site3 <HTML>
<HEAD>
<TITLE>Site 3</TITLE>
</HEAD>
<BODY>
SITE 3
</BODY>
</HTML>
E:\serveur_web\www\site4 <HTML>
<HEAD>
<TITLE>Site 4</TITLE>
</HEAD>
<BODY>
SITE 4
</BODY>
</HTML>

2. Déclaration des sites dans le DNS

Lancez notepad en l’exécutant en tant qu’administrateur (clic droit sur notepad > exécuter en tant qu’administrateur)
Faire Fichier > Ouvrir… puis sélectionnez le fichier C:\Windows\System32\drivers\etc\hosts Ajouter les lignes suivantes

127.0.0.1 www.site1.fr
127.0.0.1 www.site2.fr
127.0.0.1 www.site3.fr
127.0.0.1 www.site4.fr
127.0.0.1 www.site5.fr

Enregistrer le fichier.

3. Configuration des serveurs virtuels

Il faut créer une section <virtualhost @IP :port></virtualhost> avec au minimum une directive ServerName et DocumentRoot pour chaque serveur virtuel.
Toutes les directives qui ont un contexte virtual host peuvent être utilisées pour affiner la configuration de chaque serveur virtuel.
Dans la configuration par nom que je réalise @IP aura la valeur * qui signifie n’importe quelle adresse ip.

Voyons d’un peu plus près le fonctionnement.
Lorsqu’une requête arrive sur le serveur apache, celui-ci recherche la section <virtualhost> qui correspond le mieux au couple @IP :port. Si plusieurs <virtualhost> correspondent, le serveur sélectionne celui correspondant au nom d’hote de la requête, il regarde la directive ServerName dans chaque section <virtualhost>. Si aucun nom d’hote ne correspond, c’est le premier serveur virtuel qui est utilisé, qui est donc le serveur virtuel par défaut.

Je choisis de déclarer les hôtes dans le fichier conf/extra/httpd-vhosts.conf donc il faut décommenter la ligne Include conf/extra/httpd-vhosts.conf en enlevant le # dans le fichier httpd.conf.

Dans le fichier httpd-vhosts.conf, il y a par défaut des exemples de déclaration d’hôte virtuel, ça vous donne une idée de la syntaxe d’une section <virtualhost></virtualhost>.
Je supprime les exemples et je déclare les sections <virtualhost></virtualhost> pour chaque site

<VirtualHost *:80>
ServerName www.site1.fr
DocumentRoot "E:/serveur_web/www/site1"
<Directory "E:/serveur_web/www/site1">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
CustomLog "logs/site1/site1-access.log" common
ErrorLog "logs/site1/site1-error.log"
</VirtualHost>
<VirtualHost *:80>
ServerName www.site2.fr
DocumentRoot "E:/serveur_web/www/site2"
<Directory "E:/serveur_web/www/site2">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
CustomLog "logs/site2/site2-access.log" common
ErrorLog "logs/site2/site2-error.log"
</VirtualHost>
<VirtualHost *:80>
ServerName www.site3.fr
DocumentRoot "E:/serveur_web/www/site3"
<Directory "E:/serveur_web/www/site3">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
CustomLog "logs/site3/site3-access.log" common
ErrorLog "logs/site3/site3-error.log"
</VirtualHost>
<VirtualHost *:80>
ServerName www.site4.fr
DocumentRoot "E:/serveur_web/www/site4"
<Directory "E:/serveur_web/www/site4">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
CustomLog "logs/site4/site4-access.log" common
ErrorLog "logs/site4/site4-error.log"
</VirtualHost>

Enregistrer le fichier.

Pour vérifier qu’il n’y a pas d’erreur de syntaxe dans la déclaration de vos serveurs virtuels tapez la commande Apache2.4\bin\httpd –S dans une invite de commande.
Si la commande ne retourne rien c’est que tout va bien, vous pouvez relancez le service Apache2.4.

Il ne reste plus qu’à tester.

Lancez votre navigateur puis saisissez l’adresse http://www.site1.fr SITE1 doit s’afficher dans votre navigateur.
Saisissez http://www.site2.fr SITE 2 doit s’afficher et ainsi de suite jusqu’au site 4.
Maintenant saisissez http://www.site5.fr, vous pouvez constater que SITE 1 s’affiche dans le navigateur. C’est le comportement normal d’apache, le serveur virtuel pour http://www.site5.fr n’est pas déclaré donc le premier serveur virtuel de la liste sera utilisé.

Pour toutes vos questions n’hésitez pas à me laisser un commentaire 🙂

Publicités

Publié le 21 octobre 2012, dans Apache, et tagué , , , , , , , , , , , , . Bookmarquez ce permalien. 1 Commentaire.

  1. Pingback: travail web

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :