Dans ce billet, j’aborde rapidement la mise en place de plusieurs sites (donc plusieurs domaines et/ou sous-domaines) hébergés par un unique serveur.
Configuration
- Le serveur Apache2 en question tourne sous Debian.
- Le serveur est chez un hébergeur
X. - Les noms de domaines sont gérés par un prestataire
Y.
Si votre hébergeur gère vos domaines, c’est donc encore plus simple mais il faudra adapter légèrement le contenu de ce billet.
Pour l’installation d’Apache2 sur Debian, vous pouvez vous reporter à cet article de Pierre-Yves Landuré. Pour d’autres systèmes, je vous invite à vous rendre sur le site officiel et lire la documentation qui vous concerne. Si vous n’utilisez pas Apache2 sur un serveur Debian, la configuration présentée ici devra être adaptée.
Principes
Il y a 3 étapes à suivre:
- Le domaine doit pointer l’adresse IP du serveur.
- Il faut créer autant de sous-domaines que souhaités, si vous voulez gérer plusieurs sites sur ce domaine.
- Il faut mettre en place autant d’hôtes virtuels qu’il y a de sites, dans la configuration d’Apache2.
Mise en place
DNS et glue records du domaine
Pour que le domaine pointe vers le serveur Apache2, il faut mettre à jour ses glue records.
C’est généralement dans l’interface de gestion de l’hébergeur du serveur que l’on administre les glue records. Si le domaine n’est pas géré par lui, il faut donc rediriger le domaine vers les serveurs DNS de l’hébergeur afin de lui permettre l’administration du domaine. Si le domaine est géré par l’hébergeur, ignorez ce paragraphe. Concrètement, il y a généralement 2 étapes:
- Dans l’interface de gestion du domaine chez le registrar, remplacer les DNS du registrar par ceux de l’hébergeur.
- Dans l’interface de gestion de l’hébergeur, ajouter le domaine géré (si cela n’est pas fait automatiquement).
Le transfert de cette gestion dure généralement quelques heures (comptez une demi-journée), le temps que l’information se diffuse sur le réseau.
Une fois la gestion du domaine possible, il faut accéder à l’administration de ses glue records, notamment le champ A, et éventuellement CNAME. Le champ A a pour fonction d’associer un sous-domaine à l’adresse IP du serveur web (Apache2). Le champ CNAME permet de créer des alias de sous-domaine.
Typiquement, si mon domaine est eric-bml.net, l’IP de mon serveur web est
1.2.3.4 et si je veux que eric-bml.net et www.eric-bml.net pointent mon
serveur web, je crée deux enregistrements de type A: “”->1.2.3.4 et
“www”->1.2.3.4. Si je souhaite créer un sous-domaine blog, je crée un
enregistrement de type CNAME: “blog”–>www.eric-bml.net. Ainsi, les trois URL
suivantes pointent mon serveur web:
Il reste maintenant à créer le ou les sites web correspondant à chacune de ces URL.
Hôtes virtuels
Ce mécanisme du serveur HTTP Apache consiste à configurer le serveur web pour qu’il redirige une requête vers le bon site web, en fonction du domaine utilisé dans la requête.
Dans mon cas, je souhaite que www.eric-bml.net et eric-bml.net servent le
même site, et que blog.eric-bml.net serve un autre site.
Apache2 sépare la gestion des hôtes virtuels en deux dossiers:
/etc/apache2/sites-available/etc/apache2/sites-enabled
Le premier contient le fichier de configuration de l’hôte virtuel, le second un
lien vers ce dernier. Les sites qui ne sont pas activés n’ont tout simplement
pas de lien dans le dossier sites-enabled/.
Création d’un hôte virtuel
Pour créer l’hôte virtuel eric-bml.net, je crée donc le fichier suivant:
/etc/apache2/sites-available/eric-bml.net
En suivant l’exemple précédent, et en supposant que les fichiers de mon site web
soient stockés dans le dossier /var/www/eric-bml.net/ de mon serveur, le
contenu de ce fichier sera:
<VirtualHost 1.2.3.4:80>
DocumentRoot /var/www/eric-bml.net
ServerName eric-bml.net
</VirtualHost>
Il faudrait créer un fichier similaire pour
/etc/apache2/sites-available/www.eric-bml.net (avec
ServerName www.eric-bml.net).
Pour créer l’hôte virtuel blog.eric-bml.net, le principe est le même, mais il
faut modifier à la fois le paramètre ServerName et le paramètre DocumentRoot
afin que ce dernier pointe le dossier contenant les fichiers de ce site, par
exemple /var/www/blog.eric-bml.net.
Activation de l’hôte virtuel
Pour activer chaque hôte, il faut utiliser les commandes suivantes:
a2ensite www.eric-bml.net
a2ensite eric-bml.net
a2ensite blog.eric-bml.net
Apache vous indiquera de taper la commande suivante afin d’appliquer la nouvelle configuration (sans redémarrer le serveur):
/etc/init.d/apache2 reload
Il ne doit y avoir aucune erreur suite à cette commande. Sinon, vérifiez le contenu des fichiers de configuration modifiés, il y a sans doute une erreur de syntaxe ou le nom d’un paramètre est mal écrit.
C’est tout!
Pour désactiver l’hôte virtuel, utiliser la commande a2dissite (même syntaxe
que a2ensite).