Comment configurer des hôtes virtuels Apache sur CentOS 7

Virtual-Host-Multiple-Websites-Ubuntu-13.10-and-Rackspace-Cloud-Server
18Jan, 2018

Introduction

Le serveur Web Apache est le moyen le plus populaire de diffuser du contenu Web sur Internet. Il sert plus de la moitié de tous les sites Web actifs d’Internet et est extrêmement puissant et flexible.

Apache décompose ses fonctionnalités et composants en unités individuelles pouvant être personnalisées et configurées indépendamment. L’unité de base qui décrit un site ou un domaine individuel est appelée un hôte virtuel. Les hôtes virtuels ou VHOSTS permettent à un serveur d’héberger plusieurs domaines ou interfaces en utilisant un seul serveur Web. Ceci est pertinent pour quiconque cherche à héberger plus d’un site sur un seul VPS.

Chaque domaine configuré dirige le visiteur vers un répertoire spécifique contenant les informations de ce site, sans jamais indiquer que le même serveur est également responsable des autres sites. Ce schéma est extensible sans limite de logiciel, à condition que votre serveur puisse gérer le trafic que tous les sites attirent.

Dans ce guide, nous allons voir comment configurer les hôtes virtuels (VHOSTS) Apache sur un VPS CentOS 7. Au cours de ce processus, vous apprendrez à diffuser un contenu différent à différents visiteurs en fonction des domaines qu’ils demandent.

Prérequis

Avant de commencer avec ce guide, vous devez vous assurer de certaines choses.

Vous aurez besoin d’accéder à un serveur CentOS 7 avec un utilisateur non root disposant de privilèges sudo.

Vous aurez également besoin d’avoir Apache installé afin de configurer les hôtes virtuels pour cela. Si vous ne l’avez pas déjà fait, vous pouvez utiliser yum pour installer Apache via les référentiels logiciels par défaut de CentOS:

sudo yum -y install httpd

Ensuite, activez Apache en tant que service CentOS pour qu’il démarre automatiquement après un redémarrage:

sudo systemctl enable httpd.service

Une fois ces étapes terminées, connectez-vous en tant que compte d’utilisateur non root via SSH.

Remarque: L’exemple de configuration de ce tuto fera un hôte virtuel pour example1.com et un autre pour example2.com. Ceux-ci seront référencés tout au long du guide, mais vous devrez remplacer par vos propres domaines ou valeurs.

Si vous n’avez aucun nom de domaine, je vous montrerai comment tester votre configuration d’hôte virtuel avec des valeurs factices vers la fin du tutoriel.

Première étape – Créer la structure de répertoire

Tout d’abord, nous devons créer une structure de répertoire qui contiendra les données du site à envoyer aux visiteurs.

Notre document racine (le répertoire de premier niveau qu’Apache considère pour trouver du contenu à diffuser) sera défini sur des répertoires individuels dans le répertoire / var / www. Nous allons créer un répertoire pour chacun des hôtes virtuels que nous prévoyons de créer.

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

Nous pouvons faire ces répertoires en utilisant la commande mkdir (avec l’option -p qui nous permet de créer un dossier avec une arborescence):

sudo mkdir -p /var/www/exemple1.com/public_html
sudo mkdir -p /var/www/exemple2.com/public_html

Deuxième étape – Modifier les autorisations

Nous avons maintenant la structure de répertoire pour nos fichiers, mais ils appartiennent à notre utilisateur root. Si nous voulons que notre utilisateur régulier puisse modifier les fichiers dans nos répertoires web, nous pouvons changer le propriétaire avec chown:

sudo chown -R $ USER: $ USER /var/www/exemple1.com/public_html
sudo chown -R $ USER: $ USER /var/www/exemple2.com/public_html

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

Nous devrions également modifier un peu nos permissions pour nous assurer que l’accès en lecture est autorisé au répertoire web général, et à tous les fichiers et dossiers à l’intérieur, afin que les pages puissent être servies correctement:

sudo chmod -R 755 /var/www

Votre serveur Web est désormais autorisé pour diffuser du contenu, et votre utilisateur doit être en mesure de créer du contenu dans les dossiers appropriés.

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

Maintenant que nous avons mis en place notre structure de répertoires, créons du contenu à diffuser.

Parce que c’est juste pour la démonstration et les tests, nos pages seront très simples. Nous allons simplement créer une page index.html pour chaque site qui identifie ce domaine spécifique.

Commençons par exemple.com. Nous pouvons ouvrir un fichier index.html dans notre éditeur en tapant:

nano /var/www/example1.com/public_html/index.html

Dans ce fichier, créez un document HTML simple qui indique le site auquel la page est connectée. Pour ce guide, le fichier de notre premier domaine ressemblera à ceci:

<html>
<head>
<title>Bienvenue sur Exemple1.com!</title>
</head>
<body>
<h1>Success! L’hôte virtuel example1.com fonctionne!</h1>
</body>
</html>

Enregistrez et fermez le fichier lorsque vous avez terminé.

Nous pouvons copier ce fichier à utiliser comme modèle pour index.html de notre deuxième site en tapant:

cp /var/www/example1.com/public_html/index.html /var/www/example2.com/public_html/index.html

Maintenant, ouvrons ce fichier et modifions les informations

nano /var/www/example2.com/public_html/index.html

<html>
<head>
<title>Bienvenue sur Exemple2.com!</title>
</head>
<body>
<h1>Success! L’hôte virtuel example2.com fonctionne!</h1>
</body>
</html>

Enregistrez et fermez également ce fichier. Vous avez maintenant les pages nécessaires pour tester la configuration de l’hôte virtuel.

Étape 4 – Créer des nouveaux fichiers de configuration d’hôtes virtuels

Les fichiers hôtes virtuels sont ce qui spécifie la configuration de nos sites distincts et dictent comment le serveur Web Apache répondra aux diverses demandes de domaine.

Pour commencer, nous devrons configurer le répertoire dans lequel nos hôtes virtuels seront stockés, ainsi que le répertoire qui indique à Apache qu’un hôte virtuel est prêt à servir aux visiteurs. Le répertoire sites-available conservera tous nos fichiers hôtes virtuels, tandis que le répertoire sites-enabled contiendra des liens symboliques vers des hôtes virtuels que nous voulons publier. Nous pouvons créer les deux répertoires en tapant:

sudo mkdir /etc/httpd/sites-available
sudo mkdir /etc/httpd/sites-enabled

Remarque: Cette configuration de répertoire permettant la gestion des VHOSTS a été introduite par les contributeurs Debian, mais nous l’incluons ici pour plus de flexibilité dans la gestion de nos hôtes virtuels (car il est plus facile d’activer et de désactiver temporairement les hôtes virtuels de cette façon).

Ensuite, nous devrions indiquer à Apache de rechercher des hôtes virtuels dans le répertoire sites-enabled. Pour ce faire, nous allons éditer le fichier de configuration principal d’Apache et ajouter une ligne déclarant un répertoire optionnel pour les fichiers de configuration supplémentaires:

sudo nano /etc/httpd/conf/httpd.conf

Ajoutez cette ligne à la fin du fichier:

IncludeOptional sites-enabled/*.conf

Enregistrez et fermez le fichier lorsque vous avez terminé d’ajouter cette ligne. Nous sommes maintenant prêts à créer notre premier fichier d’hôte virtuel.

Créer le premier fichier hôte virtuel

Commencez par ouvrir le nouveau fichier dans votre éditeur avec les privilèges root:

sudo nano /etc/httpd/sites-available/example1.com.conf

Remarque: En raison des configurations que nous avons décrites, tous les fichiers d’hôtes virtuels doivent se terminer par .conf

Commencez par créer une paire de tags désignant le contenu en tant qu’hôte virtuel écouté sur le port 80 (port HTTP par défaut):

<VirtualHost *:80>

</VirtualHost>

Ensuite, nous allons déclarer le nom du serveur principal, www.example.com. Nous créerons également un alias de serveur pour pointer vers example.com, afin que les requêtes pour www.example.com et example.com fournissent le même contenu:

<VirtualHost *:80>
ServerName www.example1.com
ServerAlias example1.com
</VirtualHost>

Remarque: Pour que la version www du domaine fonctionne correctement, la configuration DNS du domaine nécessite un enregistrement A ou CNAME qui pointe les requêtes www vers l’adresse IP du serveur. Un enregistrement générique (*) fonctionnera également.

Enfin, nous terminerons en pointant vers le répertoire racine de nos documents Web accessibles au public. Nous indiquerons également à Apache où stocker les erreurs et demander des journaux pour ce site particulier:

<VirtualHost *:80>

ServerName www.example1.com
ServerAlias example1.com
DocumentRoot /var/www/example1.com/public_html
ErrorLog /var/www/example1.com/error.log
CustomLog /var/www/example1.com/requests.log combined
</VirtualHost>

Lorsque vous avez terminé d’écrire ces éléments, vous pouvez enregistrer et fermer le fichier.
Copier le premier hôte virtuel et personnaliser pour les domaines supplémentaires

Maintenant que nous avons établi notre premier fichier hôte virtuel, nous pouvons créer notre deuxième fichier en copiant ce fichier et en l’ajustant au besoin.

Commencez par le copier avec cp:

sudo cp /etc/httpd/sites-available/example1.com.conf /etc/httpd/sites-available/example2.com.conf

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

sudo nano /etc/httpd/sites-available/example2.com.conf

Vous devez maintenant modifier toutes les informations pour référencer votre deuxième domaine. Lorsque vous avez terminé, votre deuxième fichier hôte virtuel peut ressembler à ceci:

<VirtualHost *:80>
ServerName www.example2.com
DocumentRoot /var/www/example2.com/public_html
ServerAlias example2.com
ErrorLog /var/www/example2.com/error.log
CustomLog /var/www/example2.com/requests.log combined
</VirtualHost>

Lorsque vous avez terminé ces modifications, vous pouvez enregistrer et fermer le fichier.

Étape 5 – Activer les nouveaux fichiers d’hôte virtuel

Maintenant que nous avons créé nos fichiers hôtes virtuels, nous devons les activer pour qu’Apache sache les servir aux visiteurs. Pour ce faire, nous pouvons créer un lien symbolique pour chaque hôte virtuel dans le répertoire sites-enabled:

sudo ln -s /etc/httpd/sites-available/example1.com.conf /etc/httpd/sites-enabled/example1.com.conf
sudo ln -s /etc/httpd/sites-available/example2.com.conf /etc/httpd/sites-enabled/example2.com.conf

Lorsque vous avez terminé, redémarrez Apache pour que ces modifications prennent effet:

sudo apachectl restart

Étape 6 – Configuration du fichier local des hôtes (facultatif)

Si vous avez utilisé des domaines d’exemple au lieu de domaines réels pour tester cette procédure, vous pouvez toujours tester la fonctionnalité de vos hôtes virtuels en modifiant temporairement le fichier hosts sur votre ordinateur local. Cela interceptera toutes les demandes pour les domaines que vous avez configurés et les pointera vers votre serveur VPS, tout comme le ferait le système DNS si vous utilisiez des domaines enregistrés. Cela ne fonctionnera que depuis votre ordinateur, et est simplement utile à des fins de test.

Remarque: Assurez-vous que vous travaillez sur votre ordinateur local pour ces étapes et non votre serveur VPS. Vous aurez besoin d’accéder aux informations d’identification administratives pour cet ordinateur.

Si vous utilisez un ordinateur Mac ou Linux, éditez votre fichier hosts local avec des privilèges d’administration en tapant:

sudo nano /etc/hosts

Si vous utilisez un ordinateur Windows, vous pouvez trouver des instructions sur la modification de votre fichier hosts ici.

Les détails que vous devez ajouter sont l’adresse IP publique de votre VPS suivie du domaine que vous souhaitez utiliser pour atteindre ce VPS:

server_ip_address example1.com
server_ip_address example2.com

Cela dirigera toutes les demandes pour example1.com et example2.com sur notre ordinateur local et les enverra à notre serveur à server_ip_address.

Étape 7 – Testez le résultat

Maintenant que vous avez configuré vos hôtes virtuels, vous pouvez tester votre configuration facilement en accédant aux domaines que vous avez configurés dans votre navigateur Web:

http://example1.com

Vous devriez voir une page qui ressemble à ceci:

Success! L’hôte virtuel example1.com fonctionne!

 

De même, si vous visitez vos autres domaines, vous verrez les fichiers que vous avez créés pour eux.

Si tous les sites que vous avez configurés fonctionnent correctement, vous avez configuré avec succès vos nouveaux hôtes virtuels Apache sur le même serveur CentOS.

Si vous avez ajusté le fichier hosts de votre ordinateur personnel, vous pouvez supprimer les lignes que vous avez ajoutées maintenant que vous avez vérifié que votre configuration fonctionne. Cela empêchera que votre fichier hosts soit rempli avec des entrées qui ne sont pas réellement nécessaires.

Conclusion

À ce stade, vous devriez maintenant avoir un seul serveur CentOS 7 gérant plusieurs sites avec des domaines séparés. Vous pouvez développer ce processus en suivant les étapes décrites ci-dessus pour créer des hôtes virtuels supplémentaires ultérieurement. Il n’y a pas de limite de logiciel sur le 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.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *