Comment configurer des hôtes virtuels Apache sur un serveur Ubuntu
Introduction
Le serveur HTTP Apache est un serveur web open-source populaire qui offre flexibilité, puissance et un support étendu pour les développeurs. La configuration du serveur Apache ne se fait pas dans un fichier monolithique unique, mais plutôt à travers une conception modulaire où de nouveaux fichiers peuvent être ajoutés et modifiés selon les besoins. Dans cette conception modulaire, vous pouvez créer un site ou un domaine individuel appelé hôte virtuel.
En utilisant des hôtes virtuels, une seule instance d'Apache peut servir plusieurs sites web. Chaque domaine ou site individuel configuré avec Apache dirigera le visiteur vers un répertoire spécifique contenant les informations de ce site. Cela se fait sans indiquer au visiteur que le même serveur est également responsable d'autres sites. Ce système est extensible sans limite logicielle tant que votre serveur peut gérer la charge.
Dans ce guide, vous allez configurer des hôtes virtuels Apache sur un serveur Ubuntu. Au cours de ce processus, vous apprendrez à fournir un contenu différent à différents visiteurs en fonction des domaines qu'ils demandent en créant deux sites d'hôtes virtuels.
Validé sur les récentes versions d'Ubuntu : Les étapes et commandes de ce tutoriel ont été vérifiées sur Ubuntu 20.04 LTS, 22.04 LTS et 24.04 LTS. La configuration d'Apache (sites-available, sites-enabled, a2ensite, a2dissite) et la structure des répertoires utilisées ici sont les mêmes pour ces versions.
Points clés
- Hôtes virtuels permettent à une seule instance d'Apache de servir plusieurs sites ; chaque domaine pointe vers sa propre racine de documents.
- Vous créez un répertoire sous
/var/wwwpour chaque site (par exemple,/var/www/votre_domaine/public_html) et définissez la propriété et les permissions afin que le serveur web puisse lire les fichiers et que votre utilisateur puisse les modifier. - Chaque site obtient son propre fichier de configuration dans
/etc/apache2/sites-available/avecServerName,ServerAliasetDocumentRoot. - Utilisez
a2ensiteeta2dissitepour activer ou désactiver des sites, puis rechargez ou redémarrez Apache pour que les modifications prennent effet. - Vous pouvez tester sans vrai DNS en modifiant votre fichier
hostslocal pour faire pointer vos domaines d'exemple vers l'IP du serveur.
Prérequis
Avant de commencer ce tutoriel, vous aurez besoin de :
- Un serveur Ubuntu avec un utilisateur non root disposant de privilèges sudo. Vous pouvez utiliser notre guide de configuration initiale du serveur sous Ubuntu pour le configurer.
- Apache installé sur le serveur. Vous pouvez apprendre comment faire en suivant les étapes 1 à 3 de notre tutoriel « Comment installer le serveur Web Apache sur Ubuntu ».
Si vous utilisez Linux-Console.net, vous pouvez apprendre à configurer des domaines en suivant notre documentation produit, Comment ajouter et configurer des domaines.
Pour réussir ce tutoriel, vous aurez besoin de deux domaines avec :
- Un enregistrement A avec your_domain pointant vers l'adresse IP publique de votre serveur.
- Un enregistrement A avec www.votre_domaine pointant vers l'adresse IP publique de votre serveur.
Pour les autres fournisseurs, veuillez vous référer à la documentation produit correspondante.
Remarque : Si vous n'avez pas de domaines disponibles pour le moment, vous pouvez utiliser des valeurs de test localement sur votre ordinateur. L'étape 6 de ce tutoriel vous montrera comment tester et configurer vos valeurs de test. Cela vous permettra de valider votre configuration même si votre contenu ne sera pas accessible aux autres visiteurs via le nom de domaine.
Étape 1 — Création de la structure de répertoires
La première étape consiste à créer une structure de répertoires qui contiendra les données du site que vous allez fournir aux visiteurs.
Votre racine du document, le répertoire de niveau supérieur qu'Apache consulte pour trouver le contenu à servir, sera défini sur des répertoires individuels sous le répertoire /var/www. Vous créerez un répertoire ici pour chacun des hôtes virtuels.
Dans chacun de ces répertoires, vous allez créer un répertoire public_html. Le répertoire public_html contient le contenu qui sera servi à vos visiteurs. Les répertoires parents, nommés ici your_domain_1 et your_domain_2, contiendront les scripts et le code de l'application pour prendre en charge le contenu web.
Utilisez ces commandes, avec vos propres noms de domaine, pour créer vos répertoires :
sudo mkdir -p /var/www/your_domain_1/public_html
sudo mkdir -p /var/www/your_domain_2/public_htmlAssurez-vous de remplacer your_domain_1 et your_domain_2 par vos propres domaines respectifs. Par exemple, si l’un de vos domaines était example.com, vous créeriez cette structure de répertoires : /var/www/example.com/public_html.
Étape 2 — Accord des autorisations
Vous avez créé la structure de répertoires pour vos fichiers, mais ils sont la propriété de l'utilisateur root. Si vous voulez que votre utilisateur habituel puisse modifier les fichiers dans ces répertoires web, vous pouvez changer la propriété avec ces commandes :
sudo chown -R $USER:$USER /var/www/your_domain_1/public_html
sudo chown -R $USER:$USER /var/www/your_domain_2/public_htmlLa variable $USER prendra la valeur de l'utilisateur avec lequel vous êtes actuellement connecté lorsque vous appuierez sur ENTRÉE. En faisant cela, l'utilisateur régulier devient maintenant propriétaire des sous-répertoires public_html où vous allez stocker votre contenu.
Vous devriez également modifier vos autorisations pour vous assurer que l'accès en lecture est autorisé pour le répertoire web général ainsi que pour tous les fichiers et dossiers qu'il contient afin que les pages puissent être servies correctement :
sudo chmod -R 755 /var/wwwVotre serveur web dispose maintenant des autorisations nécessaires pour fournir du contenu, et votre utilisateur devrait pouvoir créer du contenu dans les dossiers requis. L'étape suivante consiste à créer du contenu pour vos sites d'hôtes virtuels.
Étape 3 — Création de pages par défaut pour chaque hôte virtuel
Avec votre structure de répertoires en place, vous pouvez commencer à vous concentrer sur chaque site d'hôte virtuel individuel et le contenu de ce site. Commencez par créer une page index.html pour votre premier site your_domain_1.
Ouvrez et créez le fichier index.html avec votre éditeur de texte préféré. Cet exemple utilise nano :
nano /var/www/your_domain_1/public_html/index.htmlDans ce fichier, créez un fichier HTML qui indique aux visiteurs à quel site ils sont connectés :
<html>
<head>
<title>Welcome to your_domain_1!</title>
</head>
<body>
<h1>Success! The your_domain_1 virtual host is working!</h1>
</body>
</html>Pour enregistrer et fermer le fichier dans nano, commencez par appuyer sur CTRL+X. Appuyez sur Y lorsque vous êtes invité à enregistrer le fichier, puis appuyez sur ENTRÉE une fois que vous avez terminé pour quitter.
Ensuite, copiez ce fichier pour l'utiliser comme base pour votre deuxième site en tapant :
cp /var/www/your_domain_1/public_html/index.html /var/www/your_domain_2/public_html/index.htmlPuis ouvrez ce nouveau fichier et modifiez les informations pertinentes en utilisant votre éditeur de texte comme auparavant :
nano /var/www/your_domain_2/public_html/index.html<html>
<head>
<title>Welcome to your_domain_2!</title>
</head>
<body> <h1>Success! The your_domain_2 virtual host is working!</h1>
</body>
</html>
Enregistrez et fermez ce fichier. Vous avez maintenant une page pour chaque site que vous pouvez utiliser pour tester la configuration de l'hôte virtuel.
Étape 4 — Création de nouveaux fichiers d'hôte virtuel
Les fichiers d’hôte virtuel spécifient la configuration réelle de vos hôtes virtuels et contrôlent la manière dont le serveur web Apache répond aux différentes demandes de domaine. Pour en savoir plus sur la structure et les options globales d’Apache, consultez Comment configurer le serveur web Apache sur un VPS Ubuntu ou Debian.
Apache est livré avec un fichier d'hôte virtuel par défaut appelé 000-default.conf. Vous pouvez copier ce fichier pour créer des fichiers d'hôte virtuel pour chacun de vos domaines.
Copiez le fichier de configuration par défaut sur le premier domaine :
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/your_domain_1.confSachez que la configuration par défaut d'Ubuntu exige que chaque fichier d'hôte virtuel se termine par .conf.
Ouvrez le nouveau fichier dans votre éditeur de texte préféré avec les privilèges root :
sudo nano /etc/apache2/sites-available/your_domain_1.confSans les commentaires, le fichier ressemblera à ceci :
<VirtualHost *:80>
...
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
...
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>Dans ce fichier, personnalisez les éléments pour votre premier domaine et ajoutez quelques directives supplémentaires. Cette section de l'hôte virtuel correspond à toutes les requêtes effectuées sur le port 80, le port HTTP par défaut.
Tout d'abord, changez la directive ServerAdmin pour une adresse e-mail à laquelle l'administrateur du site peut recevoir des e-mails :
ServerAdmin admin@your_domain_1Après cela, ajoutez deux directives supplémentaires. La première, appelée ServerName, établit le domaine de base pour la définition de l’hôte virtuel. La seconde, appelée ServerAlias, définit d’autres noms qui devraient correspondre comme s’ils étaient le nom de base. Cela est utile pour faire correspondre des hôtes supplémentaires que vous avez définis. Par exemple, si vous définissez la directive ServerName sur example.com, vous pourriez définir un ServerAlias sur www.example.com, et les deux pointeront vers l’adresse IP de ce serveur.
Ajoutez ces deux directives à votre fichier de configuration après la ligne ServerAdmin :
<VirtualHost *:80>
...
ServerAdmin admin@your_domain_1
ServerName your_domain_1
ServerAlias www.your_domain_1
DocumentRoot /var/www/html
...
</VirtualHost>Ensuite, changez l'emplacement du fichier de votre hôte virtuel pour la racine des documents de ce domaine. Modifiez la directive DocumentRoot pour qu'elle pointe vers le répertoire que vous avez créé pour cet hôte :
DocumentRoot /var/www/your_domain_1/public_htmlVoici un exemple de fichier d'hôte virtuel avec tous les ajustements effectués ci-dessus :
<VirtualHost *:80>
...
ServerAdmin admin@your_domain_1
ServerName your_domain_1
ServerAlias www.your_domain_1
DocumentRoot /var/www/your_domain_1/public_html
...
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
...
</VirtualHost>Enregistrez et fermez le fichier.
Créez votre deuxième fichier de configuration en copiant le fichier de votre premier site d'hôte virtuel :
sudo cp /etc/apache2/sites-available/your_domain_1.conf /etc/apache2/sites-available/your_domain_2.confOuvrez le nouveau fichier dans votre éditeur préféré :
sudo nano /etc/apache2/sites-available/your_domain_2.confVous devez maintenant modifier toutes les informations pour qu'elles fassent référence à votre deuxième domaine. Une fois terminé, cela devrait ressembler à ceci :
<VirtualHost *:80>
...
ServerAdmin admin@your_domain_2
ServerName your_domain_2
ServerAlias www.your_domain_2
DocumentRoot /var/www/your_domain_2/public_html
...
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
...
</VirtualHost>Enregistrez et fermez le fichier lorsque vous avez terminé.
Étape 5 — Activation des nouveaux fichiers d'hôtes virtuels
Maintenant que vous avez créé vos fichiers d'hôte virtuel, vous devez les activer. Apache inclut quelques outils qui vous permettent de le faire.
Vous utiliserez l’outil a2ensite pour activer chacun de vos sites. Si vous souhaitez en savoir plus sur ce script, vous pouvez consulter la page de manuel a2ensite.
Utilisez les commandes suivantes pour activer vos sites d'hôtes virtuels :
sudo a2ensite your_domain_1.conf
sudo a2ensite your_domain_2.confIl y aura une sortie pour les deux sites, similaire à l'exemple ci-dessous, vous rappelant de recharger votre serveur Apache :
Enabling site example.com.
To activate the new configuration, you need to run:
systemctl reload apache2Avant de recharger votre serveur, désactivez le site par défaut défini dans 000-default.conf en utilisant la commande a2dissite :
sudo a2dissite 000-default.confSite 000-default disabled.
To activate the new configuration, you need to run:
systemctl reload apache2Ensuite, testez les erreurs de configuration :
sudo apache2ctl configtestVous devriez recevoir la sortie suivante :
. . .
Syntax OKLorsque vous avez terminé, redémarrez Apache pour que ces modifications prennent effet.
sudo systemctl restart apache2Optionnellement, vous pouvez vérifier l'état du serveur après tous ces changements avec cette commande :
sudo systemctl status apache2Votre serveur devrait maintenant être configuré pour héberger deux sites web. Si vous utilisez de vrais noms de domaine, vous pouvez passer l'Étape 6 et passer directement à l'Étape 7. Si vous testez votre configuration en local, suivez l'Étape 6 pour apprendre à tester votre configuration depuis votre ordinateur local.
Étape 6 — (Optionnel) Configuration du fichier hosts local
Si vous n'avez pas utilisé de noms de domaine réels que vous possédez pour tester cette procédure et que vous avez utilisé à la place des domaines d'exemple, vous pouvez toujours tester le fonctionnement de vos sites hébergés virtuellement en modifiant temporairement le fichier hosts sur votre ordinateur local. Cela intercepta toutes les requêtes pour les domaines que vous avez configurés et les dirigera vers votre serveur privé virtuel (VPS), tout comme le ferait le système DNS si vous utilisiez des domaines enregistrés. Cela ne fonctionnera que depuis votre ordinateur local et est uniquement destiné à des fins de test.
Assurez-vous d'effectuer ces étapes sur votre ordinateur local et non sur votre serveur VPS. Vous devrez connaître le mot de passe administrateur de l'ordinateur ou être membre du groupe administratif.
Si vous utilisez un ordinateur Mac ou Linux, modifiez votre fichier local avec des privilèges administratifs en tapant :
sudo nano /etc/hostsSi vous êtes sur un ordinateur Windows, ouvrez l'invite de commandes et tapez :
notepad %windir%\system32\drivers\etc\hostsLes détails que vous devez ajouter sont l'adresse IP publique de votre serveur, suivie du domaine que vous souhaitez utiliser pour accéder à ce serveur. En utilisant les domaines mentionnés dans ce guide et en remplaçant l'IP de votre serveur par le texte your_server_IP, votre fichier devrait ressembler à ceci :
127.0.0.1 localhost
127.0.1.1 guest-desktop
your_server_IP your_domain_1
your_server_IP your_domain_2Cela dirigera toutes les demandes pour vos deux domaines sur votre ordinateur et les enverra à votre serveur à l'adresse IP désignée.
Enregistrez et fermez le fichier.
Étape 7 — Tester vos résultats
Maintenant que vous avez configuré vos hôtes virtuels, vous pouvez tester votre configuration en accédant aux domaines que vous avez configurés dans votre navigateur web :
http://your_domain_1Vous pouvez également visiter la page de votre second hôte et consulter le fichier que vous avez créé pour votre second site :
http://your_domain_2Si ces deux sites fonctionnent comme prévu, vous avez configuré avec succès deux hôtes virtuels sur le même serveur.
Remarque : Si vous avez modifié le fichier hosts de votre ordinateur local, comme expliqué à l'étape 6 de ce tutoriel, vous voudrez peut-être supprimer les lignes que vous avez ajoutées maintenant que vous avez vérifié que votre configuration fonctionne. Cela évitera que votre fichier hosts soit rempli d'entrées qui ne sont plus nécessaires.
Questions Fréquemment Posées
1. Que sont les hôtes virtuels Apache ?
Les hôtes virtuels Apache sont un moyen d'exécuter plusieurs sites web sur un seul serveur Apache. Chaque hôte virtuel a son propre domaine (ou sous-domaine), son répertoire racine et ses paramètres. Les visiteurs ne voient que le site du domaine qu'ils demandent ; ils ne voient pas que d'autres sites se trouvent sur le même serveur.
2. Combien d'hôtes virtuels Apache peut-il gérer ?
Apache ne limite pas le nombre d'hôtes virtuels. Vous pouvez en ajouter autant que votre serveur dispose de ressources. Chaque nouveau site nécessite son propre fichier de configuration dans /etc/apache2/sites-available/, son propre répertoire sous /var/www, puis vous l'activez avec a2ensite et rechargez Apache.
3. Quelle est la différence entre ServerName et ServerAlias ?
Les directives ServerName et ServerAlias spécifient à quels noms d’hôtes Apache doit répondre pour chaque hôte virtuel, mais elles ont des fonctions légèrement différentes :
| Directive | Description | Exemple |
|---|---|---|
| Le nom d'hôte principal et canonique pour l'hôte virtuel. Apache correspond exactement à ce nom. | |
| Noms d'hôtes alternatifs qui pointent également vers cet hôte virtuel, y compris les caractères génériques. | |
Comment ça marche ?
- Utilisez
ServerNamepour le domaine principal. - Utilisez
ServerAliaspour d'autres noms d'hôtes (comme les versionswww.ou les sous-domaines) qui devraient afficher le même contenu du site.
Toute demande correspondant au ServerName ou à l'une des entrées ServerAlias est traitée par cet hôte virtuel. Pour plus d'informations, consultez la documentation officielle d'Apache sur les hôtes virtuels.
4. Ai-je besoin d'un nom de domaine pour les hôtes virtuels ?
Vous n'avez pas besoin d'un domaine enregistré pour suivre ce guide. Vous pouvez utiliser des noms d'hôte d'exemple et les pointer vers votre serveur en modifiant le fichier hosts sur votre ordinateur (voir l'étape 6). Pour un site que d'autres pourront atteindre sur Internet, vous avez besoin d'un domaine réel et de records DNS qui le pointent vers votre serveur. Si vous utilisez Linux-Console.net, vous pouvez ajouter et gérer des domaines dans le panneau de contrôle ; consultez notre guide de démarrage rapide du DNS pour savoir comment ajouter un domaine.
5. Où sont stockés les fichiers d'hôtes virtuels Apache ?
Sur Ubuntu et Debian, les configurations des hôtes virtuels se trouvent dans /etc/apache2/sites-available/. Chaque site possède un fichier .conf à cet emplacement (par exemple, example.com.conf). Activer un site avec a2ensite ajoute un lien symbolique dans /etc/apache2/sites-enabled/ qui pointe vers ce fichier. Le site par défaut qui répond lorsqu’aucun autre hôte ne correspond est 000-default.conf.
Conclusion
Vous disposez désormais d'un seul serveur gérant deux noms de domaine distincts. Vous pouvez étendre ce processus en suivant les étapes que nous avons décrites ci-dessus pour ajouter des hôtes virtuels supplémentaires. Il n'y a pas de limite logicielle au nombre de noms de domaine qu'Apache peut gérer, n'hésitez donc pas à créer autant d'hôtes virtuels que votre serveur peut en supporter.
Prochaines étapes et ressources associées
- Renforcer Apache et ajouter HTTPS : Après que les hôtes virtuels fonctionnent, vous pouvez ajouter TLS avec « Comment sécuriser Apache avec Let’s Encrypt sur Ubuntu » et optimiser le serveur en suivant « Comment configurer le serveur Web Apache sur un VPS Ubuntu ou Debian ».
- Pile LAMP complète : Pour ajouter MySQL et PHP sur le même serveur Ubuntu, suivez le guide Comment installer une pile LAMP sur Ubuntu.
- Produits Linux-Console.net : Utilisez Droplets pour exécuter Ubuntu et Apache, et DNS pour gérer les enregistrements de domaine et pointer vos domaines vers votre serveur. Documentation des produits : Ajouter un domaine (démarrage rapide DNS).
Merci d'apprendre avec la communauté Linux-Console.net.


