Apache est actuellement le serveur web le plus utilisé au monde. C'est un logiciel open-source maintenu par The Apache Software Foundation. En septembre 2020, on estimait qu'il gérait 36 % de l'ensemble du trafic des sites web dans le monde. Les développeurs l'apprécient pour sa rapidité, sa sécurité, sa fiabilité et sa robustesse. Sa facilité de personnalisation lui permet de répondre aux besoins de nombreux environnements grâce à l'installation d'extensions et de modules.
Apache est doté d'un système de correspondance que vous pouvez utiliser pour héberger plusieurs domaines ou sites à l'aide d'une seule installation de serveur Apache exposée sur une seule adresse IP. Les domaines ou sites sont configurés dans l'un des fichiers de configuration d'Apache définis comme des hôtes virtuels.
Chaque domaine possède une définition d'hôte virtuel avec un répertoire spécifique vers lequel il dirige. Lorsqu'un utilisateur visite un domaine, le serveur examine chaque hôte virtuel correspondant et sélectionne celui à utiliser pour répondre à la demande du visiteur en fonction du nom d'hôte qu'il a saisi. Si aucun nom d'hôte correspondant n'est trouvé, le serveur utilise le premier hôte virtuel défini dans le fichier conf comme solution de repli. Le visiteur accèdera à la page web demandée sans savoir que le même serveur dessert d'autres sites. En fonction des ressources dont vous disposez sur votre serveur et du trafic qu'il peut supporter, vous pouvez héberger autant de domaines que vous le souhaitez.
Dans ce tutoriel, nous vous guiderons dans la configuration d'hôtes virtuels sur le serveur Ubuntu 20.04.
Avant toute chose
Pour suivre ce tutoriel, vous devez disposer d'une installation de Ubuntu 20.04. Vous devez également créer un utilisateur non-root et vous connecter avec celui-ci.
Les étapes de ce tutoriel nécessitent également que vous ayez installé Apache. Si ce n'est pas déjà fait, vous pouvez l'installer à l'aide des commandes ci-dessous. Vous pouvez suivre notre tutoriel de configuration de la pile LAMP – Linux Apache MySQL PHP pour un guide de configuration plus détaillé.
|
1 2 |
sudo apt update sudo apt install apache2 |
Vous devez avoir enregistré des noms de domaine gratuits ou payants auprès d'un registraire de domaine de votre choix. Assurez-vous que les domaines pointent vers votre serveur en configurant les enregistrements DNS. Cependant, vous pouvez toujours utiliser nos configurations pour suivre les étapes de ce tutoriel. Nous utiliserons example.dev et mydomain.com pour ce tutoriel. Vous êtes libre de les remplacer par les vôtres. Si vous décidez d'utiliser les domaines de test, les fichiers hosts d'Apache devront être modifiés pour gérer ces domaines. Nous verrons comment procéder plus tard dans ce tutoriel.
Étape 1 – Configurer les répertoires du site web
Il s'agit des répertoires contenant les données du site auxquelles les visiteurs de votre site web accèderont. La racine des documents d'Apache accessible depuis Internet se trouve généralement dans /var/www. C'est ici que nous créerons les répertoires pour les différents domaines que nous voulons héberger. Dans chacun de ces répertoires, nous ajouterons un répertoire public_html pour contenir les fichiers réels du site web. L'hôte virtuel pointe vers le répertoire public_html. Cela vous offre de la flexibilité puisque vous pouvez conserver les fichiers cruciaux du site web en dehors de public_html et ne placer que les fichiers publics à l'intérieur.
Ensuite, saisissez les commandes ci-dessous pour créer les répertoires. N'oubliez pas de remplacer les domaines de test par vos domaines réels pour les configurations suivantes :
|
1 2 |
sudo mkdir -p /var/www/example.dev/public_html sudo mkdir -p /var/www/mydomain.com/public_html |
Étape 2 – Modifier les permissions de lecture-écriture
Les commandes précédentes ont créé la structure des répertoires mais ont conservé la propriété pour l'utilisateur root. Nous voulons que notre utilisateur non-root ait des permissions complètes de lecture-écriture sur ces répertoires. Nous voulons également que le web en général ait des permissions de lecture.
Tout d'abord, modifiez la propriété au profit de l'utilisateur non-root en saisissant la commande suivante :
|
1 2 |
sudo chown -R $USER:$USER /var/www/example.dev/public_html sudo chown -R $USER:$USER /var/www/mydomain.com/public_html |
La variable $USER prend les identifiants de l'utilisateur actuellement connecté. L'utilisateur standard est désormais propriétaire du répertoire public_html. Ensuite, vous devez accorder des autorisations de lecture au web général. La commande suivante permet d'accorder l'autorisation à tous les fichiers du répertoire, garantissant ainsi que les pages web sont correctement servies :
|
1 |
sudo chmod -R 755 /var/www |
Grâce à l'exécution des trois commandes précédentes, votre site web peut désormais diffuser du contenu. De plus, votre utilisateur peut également créer du contenu à diffuser dans les répertoires spécifiques. Vous trouverez ici plus d'informations sur les permissions Ubuntu.
Étape 3 – Créer des pages de démonstration dans les répertoires de chaque hôte virtuel
Une fois la structure des répertoires en place, il est temps de passer à l'écriture de scripts. Nous allons utiliser HTML et l'éditeur de texte nano pour créer des pages web de base. Entrez la commande suivante pour ouvrir nano et créer un fichier index.html dans le répertoire du premier domaine :
|
1 |
vim /var/www/example.dev/public_html/index.html |
Dans l'éditeur, insérez le code d'exemple suivant qui s'affichera lorsque nous accéderons au domaine :
|
1 2 3 4 5 6 7 8 |
<html> <head> <title>Bienvenue sur Example.dev!</title> </head> <body> <h1>Succès !! L'hôte virtuel example..dev fonctionnehost is working!</h1> </body> </html> |
Une fois que vous avez collé les lignes ci-dessus, appuyez sur “!wq” pour enregistrer et quitter le fichier.
Créez la page index.html pour le deuxième domaine à l'aide de l'éditeur nano en saisissant la commande suivante :
|
1 |
vim /var/www/mydomain.com/public_html/index.html |
Ensuite, dans l'éditeur, collez le code HTML suivant, enregistrez et quittez :
|
1 2 3 4 5 6 7 8 |
<html> <head> <title>Bienvenue sur Mydomain.com!</title> </head> <body> <h1>Succès !! L'hôte virtuel mydomain..com fonctionnehost is working!</h1> </body> </html> |
Vous disposez maintenant des pages pour tester les deux hôtes virtuels que nous allons créer à l'étape suivante.
Étape 4 – Créer des fichiers d'hôte virtuel pour les noms de domaine
Les fichiers d'hôte virtuel contiennent les configurations de chaque hôte virtuel. Ils définissent la manière dont un nom de domaine sera desservi. Une nouvelle installation d'Apache est fournie avec un fichier d'hôte virtuel par défaut nommé 000-default.conf que nous pouvons utiliser et adapter à nos domaines. Comme vous pouvez le constater, il se termine par l'extension .conf, ce que Ubuntu attend pour les fichiers de configuration.
Les fichiers de configuration d'Apache sont situés dans le répertoire /etc/apache2/sites-available. C'est là que nous stockerons nos fichiers d'hôte virtuel. Nous pouvons copier le fichier de configuration par défaut et le modifier si nécessaire.
-
Créer le premier fichier d'hôte virtuel pour le domaine example.dev
Saisissez la commande suivante pour créer example.dev.conf en copiant le fichier de configuration par défaut :
|
1 |
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example.dev.conf |
Ensuite, ouvrez le fichier créé à l'aide de l'éditeur nano avec les privilèges sudo en utilisant la commande suivante :
|
1 |
sudo nano /etc/apache2/sites-available/example.dev.conf |
Le fichier conf par défaut ressemble à la capture d'écran ci-dessous. Les commentaires sont là pour vous guider. Nous pouvons les supprimer et ne laisser que le fichier propre avec les lignes de configuration réelles :

Vous devez personnaliser ce fichier pour votre nom de domaine et le chemin du répertoire où vous avez enregistré les fichiers du site Web. De plus, nous allons mettre à jour et ajouter plusieurs directives au fichier. Il contient déjà une directive ServerAdmin, qui contient l'adresse e-mail sur laquelle l'administrateur du serveur recevra les e-mails. Il contient également une directive DocumentRoot, qui pointe vers le répertoire où vous avez stocké les fichiers du site Web.
Nous devons ajouter deux nouvelles directives : ServerName et ServerAlias. ServerName définit le nom de domaine de base. C'est là que vous mettez votre domaine. ServerAlias définit d'autres noms qu'Apache doit faire correspondre comme s'ils étaient le nom de domaine de base. Cela vous permet de faire correspondre des hôtes comme le www.
Mettez à jour le fichier pour qu'il ressemble à ce qui est indiqué ci-dessous :
|
1 2 3 4 5 6 7 8 |
<VirtualHost *:80> ServerAdmin admin@example.dev ServerName example.dev ServerAlias www.example.dev DocumentRoot /var/www/example.dev/public_html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> |
Après cela, mettez à jour vos domaines et votre e-mail de manière appropriée. Une fois cela fait, appuyez sur CTRL + O et ENTRÉE pour enregistrer le fichier. Pour quitter l'éditeur, appuyez sur CTRL + X.
-
Créez le premier fichier d'hôte virtuel pour le domaine mydomain.com
Nous pouvons simplement copier l'hôte virtuel du premier domaine et le mettre à jour là où c'est nécessaire pour le second domaine. Utilisez la commande suivante pour copier le fichier :
|
1 |
sudo cp /etc/apache2/sites-available/example.dev.conf /etc/apache2/sites-available/mydomain.com.conf |
Ensuite, ouvrez-le dans l'éditeur nano en utilisant la commande :
|
1 |
sudo nano /etc/apache2/sites-available/mydomain.com.conf |
Trouvez les directives et mettez-les à jour de manière appropriée pour que le fichier ressemble à ce qui est indiqué ci-dessous :
|
1 2 3 4 5 6 7 8 |
<VirtualHost *:80> ServerAdmin admin@mydomain.com ServerName mydomain.com ServerAlias www.mydomain.com DocumentRoot /var/www/mydomain.com/public_html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> |
Une fois cela fait, enregistrez le fichier et quittez l'éditeur.
Étape 5 – Activation des fichiers d'hôte virtuel
À l'étape quatre, nous avons créé les fichiers d'hôte virtuel. Cependant, ils ne sont pas fonctionnels tant que vous ne les activez pas. Apache dispose d'un outil appelé a2ensite que nous utiliserons pour activer les hôtes virtuels.
Saisissez les deux commandes suivantes pour activer les hôtes virtuels :
|
1 2 |
sudo a2ensite example.dev.conf sudo a2ensite mydomain.com.conf |
Le résultat des commandes ci-dessus est présenté ci-dessous :

Ensuite, vous devez désactiver le fichier de configuration par défaut, nous utilisons l'outil Apache a2dissite pour désactiver les sites. Saisissez la commande suivante :
|
1 |
sudo a2dissite 000-default.conf |
Comme on peut le voir dans le résultat, vous devez redémarrer Apache pour que les configurations soient prises en compte. Utilisez la commande suivante :
|
1 |
sudo systemctl restart apache2 |
Ensuite, vérifiez le statut d'Apache à l'aide de la commande suivante :
|
1 |
sudo systemctl status apache2 |
Le résultat montre que votre serveur est opérationnel et qu'il est capable de desservir les deux sites web.

Étape 6 – Modifier les hôtes locaux avec des exemples de domaines
Si vous n'avez pas enregistré de domaine réel mais que vous utilisez plutôt des domaines de test, vous devrez mettre à jour vos fichiers d'hôtes locaux. Ils doivent intercepter le trafic et le diriger vers le répertoire de votre site web lorsque vous naviguez vers l'un des domaines définis dans les fichiers d'hôtes virtuels. N'oubliez pas que cela ne fonctionnera que sur votre ordinateur local. Si votre ordinateur local fonctionne sous un système d'exploitation Windows, alors suivez les instructions pour configurer les hôtes sur ce lien.
Si vous êtes sur une machine Mac ou Linux, le fichier hosts se trouve dans le répertoire /etc. Nous utiliserons un éditeur nano pour l'ouvrir et ajouter nos domaines de test. Tout d'abord, trouvez l'adresse IP de votre VPS en saisissant la commande suivante :
|
1 |
curl -4 icanhazip.com |
Saisissez la commande suivante pour ouvrir le fichier et le mettre à jour avec l'adresse IP de votre serveur :
|
1 |
sudo nano /etc/hosts |
|
1 2 3 4 |
127.0.0.1 localhost 127.0.1.1 ComputerName votre_IP_serveur example.dev votre_IP_serveur mydomain.com |
Ensuite, enregistrez et fermez le fichier. Chaque fois que vous saisissez un nom de domaine dans votre navigateur, le fichier hosts est d'abord vérifié. Si le nom de domaine est trouvé, le trafic est dirigé vers l'adresse IP spécifiée. S'il n'est pas trouvé, le système DNS est utilisé pour la redirection globale. Pour nos domaines de test, le trafic sera dirigé vers l'adresse IP spécifiée.
Étape 7 – Tester vos hôtes virtuels
Une fois les noms de domaine configurés, vous pouvez tester s'ils fonctionnent en les vérifiant dans le navigateur/terminal :
|
1 |
curl http://example.dev |
Le résultat devrait ressembler à ceci :

|
1 |
http://mydomain.com |

Félicitations ! Vous avez configuré avec succès deux sites web pour qu'ils fonctionnent sur un seul serveur.
Conclusion
Dans ce guide, vous avez appris à configurer votre serveur Apache pour desservir plus d'un site web. Si vous souhaitez ajouter d'autres sites web, vous pouvez le faire en suivant les étapes et en configurant des hôtes virtuels. Apache peut gérer autant de domaines que vous le souhaitez, tant que les ressources de votre serveur le permettent.
Bonne continuation !
Commentaires
Aucun commentaire pour l'instant. Soyez le premier.