Héberger plusieurs sites sur son serveur : Virtual Hosts
Lorsqu’un seul site est à héberger sur son serveur, il suffit de faire pointer le nom de domaine sur son IP. Mais comment faire pour héberger plusieurs sites sur son serveur ? Plusieurs noms de domaines pointant sur la même adresse IP causeront un méli-mélo si rien n’est fait au niveau de la configuration du serveur Apache2. La solution s’appelle les Virtual Hosts.
Les Virtual Hosts sont des fichiers de configuration d’Apache2 qui indiquent au serveur où faire pointer la demande du nom de domaine qu’il reçoit.
Différents types de Virtual Hosts
- basé sur le nom de domaine : le serveur va rediriger les demandes en fonction du nom de domaine recherché
- basé sur l’IP : le serveur va rediriger les demandes en fonction de l’adresse Ip recherchée
Le port d’écoute peut également être associé à l’une ou l’autre de ces méthodes permettant ainsi des configurations plus poussées. Le but étant de faire quelque chose de simple, nous allons nous limiter à l’étude des Virtual Hosts basés sur les noms de domaines.
Un site = un Virtual Host
Apache2 va rechercher les Virtual Hosts dans /etc/apache2/sites-available/ et /etc/apache2/sites-enabled/. Le 1er répertoire contenant réellement le fichier Virtual Host et le second contenant le lien symbolique au fichier.
Attention : sous Apache1, la manière de gérer les Virtual Hosts est différente, ceci ne s’applique qu’à Apache2.
Avec l’aide de Winscp dont je parlais dans ce billet (ou de tout éditeur et/ou client FTP), nous allons créé un fichier « mon_site » dans /etc/apache2/sites-available/ . Le nom du fichier importe peu, cependant il sera plus facile de se souvenir de ce qu’il contient si vous lui donnez le nom de votre site ou du moins un nom sans équivoque.
Exemple de Virtual Host (à modifier bien sûr) :
NameVirtualHost www.monnomdedomaine.tld
<VirtualHost www.monnomdedomaine.tld>
ServerAdmin admin@mail.com
DocumentRoot /var/www/monrepertoire/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/monrepertoire/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
</VirtualHost>
Explications des directives du Virtual Host
NameVirtualHost www.monnomdedomaine.tld qui ne pourra se trouver que dans un seul Virtual Host définit le site par défaut.
<VirtualHost www.monnomdedomaine.tld> est le nom de domaine à surveiller.
ServerAdmin admin@mail.com renseigne l’email inscrit dans les messages d’erreur envoyés au client du serveur.
DocumentRoot /var/www/monrepertoire/ est la racine de votre site.
<Directory /var/www/monrepertoire/> est le répertoire où se trouve les fichiers de votre site (semblable à DocumentRoot).
La directive Options indique ce qui est autorisé dans le répertoire :
- Indexes permet de lister le répertoire si aucun fichier prédéfini du style de index.html ou autre n’est présent.
- FollowSymLinks permet de suivre les liens symboliques présent dans le répertoire (utile par exemple quand on a mis un lien pour accéder à son gestionnaire de base de données).
- Multiviews permet l’affichage dans la langue du navigateur.
AllowOverride valorisé à None passe outre le .htaccess, donc ce n’est pas forcément utile (selon les besoins de chacun)
Order définit l’ordre de lecture des droits
Allow from all permet que le serveur soit accessible de partout.
Si vous désirez des précisions complémentaires, vous pouvez vous référer à la documentation officielle d’Apache 2.
L’activation du Virtual Host
Une fois le fichier créé, il faut l’activer en créant le lien symbolique dans le répertoire /etc/apache2/sites-enabled/. Cela permet au serveur de savoir que le site est actif.
Pour réaliser cette opération, il suffit de taper en ligne de commande a2ensite suivi du nom du fichier préalablement créé, donc ici ce sera a2ensite mon_site .
Si vous désirez désactiver votre site (pour une maintenance par exemple), la commande inverse est a2dissite . Donc a2dissite mon_site .
Le lien étant établi, il ne reste plus alors qu’à relancer le serveur Apache avec la commande : /etc/init.d/apache2 restart .
Une fois le 1er fichier créé, il sera possible de répéter l’ensemble des opérations pour chacun de vos sites hébergés sur votre serveur. C’est relativement simple mais si vous avez des difficultés, n’hésitez pas à demander.
Votez pour cet article s'il vous a plu :
15 commentaires pour Héberger plusieurs sites sur son serveur : Virtual Hosts
le 10.3.2008 à 15:52
Bonjour,
M’occupant de divers serveurs dédiés, j’aurais plusieurs questions à vous poser, et ca prendrait trop de place ici dans ce commentaire.
Serait il possible d’avoir votre email?
Cordialement.
le 10.3.2008 à 16:15
Bien sûr. Email envoyé. Désolé, je n’ai toujours pas mis de formulaire de contact…. j’oublie tout le temps.
le 10.3.2008 à 18:50
Salut,
Je viens de tomber sur ton blog, et les tutos que tu proposes correspondent parfaitement à ce que je recherchais.
Je ne sais quoi dire à part un grand merci et je ne peux que t’encourager à continuer
Merci à toi!
le 11.3.2008 à 9:31
Heureux que cela te plaise, si tu as des sujets particuliers que tu souhaites voir aborder, n’hésite pas à me contacter. (Promis, je mets le formulaire de contact très prochainement ). En attendant, tu peux toujours te tenir informé des nouveautés en t’abonnant au flux RSS.
le 18.3.2008 à 14:59
Ca tombe bien, je me demandais si c’était possible de te suggerer quelques sujets
J’aurais bien aimé voir comment créer un serveur subversion ou encore un serveur mail.
En attendant, comme tu dis, je m’abonne au flux RSS ^^
bonne continuation
le 25.3.2008 à 10:13
L’article sur le serveur mail est en projet, celui sur Subversion ne l’est pas pour l’instant, sorry. Mais avant cela, la fonction mail() de php sera abordée si cela t’intéresse.
le 28.3.2008 à 19:54
Bonjour,
J’ai un serveur web à mon domicile et j’héberge moi même le site d’une association dont je m’occupe et cela fonctionne très bien, si bien que mon frère m’a demandé si je pouvais l’héberger.
Mais voilà j’ai lu votre tuto pour installer un 2ème site mais j’ai plusieurs questions à vous poser:
1: mon site est en https (ssl) car nous avons une boutique enligne) est-ce que cela à une importance étant donné que dans port.conf j’ai déclaré le port 80 et 443?
2: mon site est directement sous www comment mettre l’autre et où le mettre?
D’avance merci pour votre aide et vos conseils.
Votre Email peut être pour mieux communiqué?
le 29.3.2008 à 21:37
@dcompman : 1-tant que vous ne filtrez pas sur un port précis dans le virtual host, cela ne pose pas de problème. 2-vous désirez le mettre sous un nom de domaine propre ou en sous-domaine ? Dans le 1er cas, suivez simplement le tutoriel.
le 31.3.2008 à 20:31
Bonsoir,
J’ai suivi pas à pas votre tuto et j’en suis maintenant à relancer apache2 et voici le message qu’il me met:
Forcing reload of web server (apache2)…[Mon Mar 31 21:20:28 2008] [warn] The Alias directive in /etc/apache2/sites-enabled/jubilemus at line 25 will probably never match because it overlaps an earlier Alias.
[Mon Mar 31 21:20:28 2008] [warn] NameVirtualHost *:80 has no VirtualHosts
waiting [Mon Mar 31 21:20:30 2008] [warn] The Alias directive in /etc/apache2/sites-enabled/jubilemus at line 25 will probably never match because it overlaps an earlier Alias.
[Mon Mar 31 21:20:30 2008] [warn] NameVirtualHost *:80 has no VirtualHosts
A la ligne 25 indiquée il y a ceci:
Alias /icons/ “/usr/share/apache2/icons/”
Que veulent dire ces alertes?
Merci pour votre aide et vos réponses.
Cordialement
le 1.4.2008 à 6:59
Votre ligne 25 effectivement ne sert pas votre intention, elle signifie : qd je dis “/icons/” va à “/usr/share/apache2/icons/”. Cela n’a pas vraiment d’intérêt pour notre virtual host. Mais pau lieu de tout détailler, envoyez moi, par mail, tous vos fichiers Virtual-hosts afin de me permettre deles regarder plus en détail et dans leur globalité. Merci de m’indiquer également ce que vous souhaitez mettre en place.
Ps: je me dépêche de mettre en place le formulaire de contact quelque part sur le site (je sais, j’aurais dû le faire depuis longtemps), sinon je vous contacterai directement dans la journée.
le 7.4.2008 à 18:35
Bonjour,
Très bon tutoriel, simple et précis.
Je débute dans le domaine et je me demande quel est le rapport avec les VirtualHosts et bind par exemple ?
Avec votre technique, pas besoin de serveur dns, il suffit juste de faire pointer les noms de domaine vers l’adresse IP du serveur ?
Autre chose, les fichiers default et 000-default ont ils encore une utilité une fois les VirtualHosts de chaque sites créés ?
le 8.4.2008 à 7:29
Bind est un serveur de DNS. Celui-ci associe un nom de domaine à une adresse IP. De manière générale, lorsque vous achetez un nom de domaine, vous indiquer à votre registrar vers quelle adresse IP il doit rediriger les requêtes sur votre nom de domaine.
Votre serveur Web prend alors le relais. Dans le cas où vous possédez plusieurs noms de domaines et une seule adresse IP, il va falloir que le serveur redirige vers le bon répertoire du site recherché pour l’afficher et c’est là qu’intervienne les Virtual Hosts.
Exemple : j’ai un serveur sur l’adresse 111.222.333.444 et je possède 2 noms de domaines monpremiersite.com et mon deuxiemesite.com. Chez mon Registrar, j’associe ces 2 noms de domaine à mon IP. Sur mon serveur, je crée 2 virtual hosts, qui vont chacun pointer vers un répertoire différent du disque dur de mon serveur, qui contiendra les fichiers du site.
L’intérêt de Bind est pour de plus grosses structures et des intranets par exemple.
Les fichiers default pourraient sembler ne plus servir mais je préfère les laisser et m’en sers d’une manière un peu spéciale que je détaillerai pas ici.
Hummm, je pense que je vais finir par ouvri un forum de support à mes billets techniques
le 8.4.2008 à 9:10
Merci pour l’explication, ça confirme bien ce que je pensais.
L’utilisation d’un serveur dns est inutile sur un serveur possédant qu’une adresse IP dans le cas ou tous les sites sont hébergés sur celui si.
En ce qui concerne le forum, pourquoi pas.
Mais je trouve ça bien de voir les questions réponses sous l’article. Ça permet d’éclaircir certains points.
En tous cas merci pour ton aide
le 10.4.2008 à 14:21
Exactement, le type de tuto que je cherchais depuis un moment.
Serait il possible d’avoir votre email?
Cordialement.
C’est super bien écrit merci.
le 10.4.2008 à 15:44
Heureux de vous être utile.
Je vous ai envoyé mon Email.
Merci pour le compliment.
Laisser un commentaire