Tutorial

Comment configurer les hôtes virtuels Apache sur Ubuntu 18.04

ApacheUbuntu 18.04

Introduction

Le serveur web Apache est une méthode populaire pour desservir les sites web sur Internet. En 2019, on estime qu'il desservira 29 % de tous les sites web actifs et il offre robustesse et flexibilité aux développeurs. Grâce à Apache, un administrateur peut configurer un serveur pour héberger plusieurs domaines ou sites à partir d'une seule interface ou IP en utilisant un système de correspondance.

Chaque domaine ou site individuel - appelé « hôte virtuel » - qui est configuré à l'aide d'Apache dirigera le visiteur vers un répertoire spécifique contenant les informations de ce site. Ceci est fait sans indiquer que le même serveur est également responsable d'autres sites. Ce système est extensible sans aucune limite logicielle tant que votre serveur peut supporter la charge. L'unité de base qui décrit un site ou un domaine individuel est appelée hôte virtuel.

Dans ce guide, nous vous expliquerons comment mettre en place des hôtes virtuels Apache sur un serveur Ubuntu 18.04. Au cours de ce processus, vous apprendrez comment servir différents contenus à différents visiteurs en fonction des domaines qu'ils demandent.

Conditions préalables

Avant de commencer ce tutoriel, vous devez créer un utilisateur non root.

Vous devrez également avoir installé Apache afin de pouvoir exécuter ces étapes. Si vous ne l'avez pas encore fait, vous pouvez installer Apache sur votre serveur en utilisant la méthode des paquets apt :

  • sudo apt update
  • sudo apt install apache2

Si vous souhaitez des instructions plus détaillées ainsi que la configuration du pare-feu, veuillez vous référer à notre guide Comment installer le serveur web Apache sur Ubuntu 18.04.

Pour les besoins de ce guide, notre configuration créera un hôte virtuel pour example.com et un autre pour test.com. Il y sera fait référence tout au long du guide, mais vous devrez y substituer vos propres domaines ou valeurs tout en suivant le guide.

Si vous utilisez DigitalOcean, vous pouvez apprendre comment configurer des domaines en suivant la documentation du produit, Comment ajouter des domaines. Pour les autres fournisseurs, reportez-vous à leur documentation produit pertinente. Si vous n'avez pas de domaines disponibles pour le moment, vous pouvez utiliser des valeurs de test.

Nous vous montrerons plus tard comment modifier votre fichier hôtes local pour tester la configuration si vous utilisez des valeurs de test. Cela vous permettra de valider votre configuration depuis votre ordinateur personnel, mais votre contenu ne sera pas accessible aux autres visiteurs via le nom de domaine.

Première étape - Créez la structure du répertoire

La première étape que nous allons franchir consiste à créer une structure de répertoire qui contiendra les données du site que nous allons servir aux visiteurs.

La racine ou root de notre document (le répertoire de premier niveau qu'Apache consulte pour trouver le contenu à servir) sera placée dans des répertoires individuels, sous le répertoire /var/www. Nous allons créer ici un répertoire pour les deux hôtes virtuels que nous prévoyons de développer.

Dans chacun de ces répertoires, nous allons créer un dossier public_html qui contiendra nos fichiers réels. Cela nous donne une certaine flexibilité dans notre hébergement.

Par exemple, pour nos sites, nous allons créer nos répertoires comme suit. Si vous utilisez des domaines réels ou des valeurs alternatives, remplacez le texte en surbrillance par ceux-ci.

  • sudo mkdir -p /var/www/example.com/public_html
  • sudo mkdir -p /var/www/test.com/public_html

Les parties en rouge représentent les noms de domaine que nous voulons servir à partir de notre VPS.

Deuxième étape - Accordez les autorisations

Nous avons maintenant la structure de répertoire pour nos fichiers, mais ils sont la propriété de notre utilisateur root. Si nous voulons que notre utilisateur habituel puisse modifier des fichiers dans nos répertoires web, nous pouvons changer la propriété en faisant ceci :

  • sudo chown -R $USER:$USER /var/www/example.com/public_html
  • sudo chown -R $USER:$USER /var/www/test.com/public_html

La variable $USER prendra la valeur de l'utilisateur sous lequel vous êtes actuellement connecté lorsque vous appuyez sur ENTER. En faisant cela, notre utilisateur habituel possède maintenant les sous-répertoires public_html où nous allons stocker notre contenu.

Nous devons également modifier nos autorisations afin de garantir que l'accès en lecture est autorisé au répertoire général du web et à tous les fichiers et dossiers qu'il contient, afin que les pages puissent être servies correctement :

  • sudo chmod -R 755 /var/www

Votre serveur web devrait maintenant avoir les autorisations nécessaires pour servir du contenu, et votre utilisateur devrait pouvoir créer du contenu dans les dossiers nécessaires.

Troisième étape - Créez des pages de démonstration pour chaque hôte virtuel

Nous avons maintenant mis en place notre structure de répertoires. Créons du contenu à servir.

A des fins de démonstration, nous allons faire une page index.html pour chaque site.

Commençons par exemple.com. Nous pouvons ouvrir un fichier index.html dans un éditeur de texte, dans ce cas nous utiliserons nano :

  • nano /var/www/example.com/public_html/index.html

Dans ce fichier, créez un document HTML qui indique le site auquel il est connecté, comme suit :

/var/www/example.com/public_html/index.html
<html>
  <head>
    <title>Welcome to Example.com!</title>
  </head>
  <body>
    <h1>Success! The example.com virtual host is working!</h1>
  </body>
</html>

Enregistrez et fermez le fichier (dans nano, appuyez sur CTRL + X puis Y puis ENTER) lorsque vous avez terminé.

Nous pouvons copier ce fichier pour l'utiliser comme base de notre deuxième site en saisissant :

  • cp /var/www/example.com/public_html/index.html /var/www/test.com/public_html/index.html

Nous pouvons alors ouvrir le dossier et modifier les éléments d'information pertinents :

  • nano /var/www/test.com/public_html/index.html
/var/www/test.com/public_html/index.html
<html>
  <head>
    <title>Welcome to Test.com!</title>
  </head>
  <body> <h1>Success! The test.com virtual host is working!</h1>
  </body>
</html>

Enregistrez et fermez également ce fichier. Vous disposez maintenant des pages nécessaires pour tester la configuration de l'hôte virtuel.

Quatrième étape - Créez de nouveaux fichiers d'hôte virtuel

Les fichiers d'hôte virtuel sont les fichiers qui spécifient la configuration réelle de nos hôtes virtuels et dictent comment le serveur web Apache répondra aux diverses requêtes de domaine.

Apache est livré avec un fichier d'hôte virtuel par défaut appelé 000-default.conf que nous pouvons utiliser comme point de départ. Nous allons le copier afin de créer un fichier d'hôte virtuel pour chacun de nos domaines.

Nous commencerons par un domaine, nous le configurerons, nous le copierons pour notre deuxième domaine, puis nous ferons les quelques ajustements supplémentaires nécessaires. La configuration par défaut d'Ubuntu exige que chaque fichier d'hôte virtuel se termine par .conf.

Créez le premier fichier d'hôte virtuel

Commencez par copier le fichier pour le premier domaine :

  • sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example.com.conf

Ouvrez le nouveau fichier dans votre éditeur avec les privilèges root :

  • sudo nano /etc/apache2/sites-available/example.com.conf

Une fois les commentaires supprimés, le fichier ressemblera à celui-ci :

/etc/apache2/sites-available/example.com.conf
<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 dossier, nous personnaliserons les éléments pour notre premier domaine et ajouterons quelques directives supplémentaires. Cette section d'hôte virtuel correspond à toutes les requêtes qui sont faites sur le port 80, le port HTTP par défaut.

Tout d'abord, nous devons changer la directive ServerAdmin en une adresse électronique par laquelle l'administrateur du site peut recevoir des courriels.

ServerAdmin admin@example.com

Après cela, nous devons ajouter deux directives. La première, appelée ServerName, établit le domaine de base qui doit correspondre à cette définition d'hôte virtuel. Il s'agira très probablement de votre domaine. La seconde, appelée ServerAlias, définit d'autres noms qui doivent correspondre comme s'ils étaient le nom de base. Cela est utile pour faire correspondre les hôtes que vous avez définis, comme www :

ServerName example.com
ServerAlias www.example.com

La seule autre chose que nous devons changer pour notre fichier d'hôte virtuel est l'emplacement de la racine (ou root) du document pour ce domaine. Nous avons déjà créé le répertoire dont nous avons besoin, il nous suffit donc de modifier la directive DocumentRoot pour qu'elle reflète le répertoire que nous avons créé :

DocumentRoot /var/www/example.com/public_html

Une fois terminé, notre fichier d'hôte virtuel devrait ressembler à ceci :

/etc/apache2/sites-available/example.com.conf
<VirtualHost *:80>
    ServerAdmin admin@example.com
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/public_html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

À ce stade, enregistrez et fermez le fichier.

Copiez le premier hôte virtuel et personnalisez-le pour le deuxième domaine

Maintenant que nous avons établi notre premier fichier d'hôte virtuel, nous pouvons en créer un deuxième en copiant ce fichier et en l'ajustant si nécessaire.

Commencez par le copier :

  • sudo cp /etc/apache2/sites-available/example.com.conf /etc/apache2/sites-available/test.com.conf

Ouvrez le nouveau fichier avec les privilèges root dans votre éditeur :

  • sudo nano /etc/apache2/sites-available/test.com.conf

Vous devez maintenant modifier tous les éléments d'information pour référencer votre deuxième domaine. Lorsque vous aurez terminé, il devrait ressembler à ceci :

/etc/apache2/sites-available/test.com.conf
<VirtualHost *:80>
    ServerAdmin admin@test.com
    ServerName test.com
    ServerAlias www.test.com
    DocumentRoot /var/www/test.com/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é.

Cinquième étape - Activez les nouveaux fichiers de l'hôte virtuel

Maintenant que nous avons créé nos fichiers d'hôtes virtuels, nous devons les activer. Apache comprend certains outils qui nous permettent de le faire.

Nous utiliserons l'outil a2ensite pour activer chacun de nos sites. Si vous souhaitez en savoir plus sur ce scénario, vous pouvez vous référer à la documentation d'a2ensite.

  • sudo a2ensite example.com.conf
  • sudo a2ensite test.com.conf

Ensuite, désactivez le site par défaut défini dans 000-default.conf :

  • sudo a2dissite 000-default.conf

Lorsque vous avez terminé, vous devez redémarrer Apache pour que ces changements prennent effet et utiliser l'état systemctl pour vérifier le succès du redémarrage.

  • sudo systemctl restart apache2
  • sudo systemctl status apache2

Votre serveur devrait maintenant être configuré pour desservir deux sites web.

Sixième étape - Mettez en place le fichier d'hôtes locaux (facultatif)

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 plutôt utilisé quelques domaines d'exemple, vous pouvez au moins tester la fonctionnalité de cette procédure en modifiant temporairement le fichier d'hôtes sur votre ordinateur local.

Cela interceptera toutes les demandes pour les domaines que vous avez configurés et les dirigera vers votre serveur VPS, tout comme le système DNS le ferait si vous utilisiez des domaines enregistrés. Cela ne fonctionnera toutefois qu'à partir de votre ordinateur local, et uniquement à des fins de test.

Assurez-vous que vous travaillez sur votre ordinateur local pour ces étapes et non sur votre serveur VPS. Vous devez connaître le mot de passe administratif de l'ordinateur ou être membre du groupe administratif.

Si vous êtes sur un ordinateur Mac ou Linux, modifiez votre fichier local avec des privilèges administratifs en saisissant :

  • sudo nano /etc/hosts

Si vous êtes sur une machine Windows, vous trouverez ici les instructions pour modifier votre fichier hôte.

Les détails que vous devez ajouter sont l'adresse IP publique de votre serveur suivie du domaine que vous voulez utiliser pour atteindre ce serveur.

En utilisant les domaines indiqués dans ce guide, et en remplaçant l'IP de votre serveur par le texte your_server_IP, votre fichier devrait ressembler à ceci :

/etc/hosts
127.0.0.1   localhost
127.0.1.1   guest-desktop
your_server_IP example.com
your_server_IP test.com

Enregistrez et fermez le fichier.

Cela permettra de diriger toute demande de exemple.com et test.com sur notre ordinateur et de l'envoyer à notre serveur. C'est ce que nous voulons si nous ne sommes pas réellement les propriétaires de ces domaines afin de tester nos hôtes virtuels.

Septième étape - Testez vos résultats

Maintenant que vos hôtes virtuels sont configurés, vous pouvez tester votre configuration en allant sur les domaines que vous avez configurés dans votre navigateur web :

http://example.com

Vous devriez voir une page qui ressemble à celle-ci :

Exemple d'hôte virtuel Apache

Vous pouvez également visiter votre deuxième page et voir le fichier que vous avez créé pour votre deuxième site.

http://test.com

Test de l'hôte virtuel Apache

Si ces deux sites fonctionnent comme prévu, vous avez réussi à configurer deux hôtes virtuels sur le même serveur.

Si vous avez adapté le fichier hôte de votre ordinateur personnel, 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 d'accueil ne soit rempli d'entrées qui ne sont plus nécessaires.

Si vous avez besoin d'un accès à long terme, pensez à ajouter un nom de domaine pour chaque site dont vous avez besoin et à le configurer pour qu'il pointe vers votre serveur.

Conclusion

Si vous avez suivi ces étapes, vous devriez maintenant avoir un seul serveur qui gère deux noms de domaine distincts. Vous pouvez étendre ce processus en suivant les étapes que nous avons décrites ci-dessus pour créer 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, alors n'hésitez pas à en faire autant que votre serveur est capable de gérer.

Creative Commons License