Comment configurer des hôtes virtuels Apache sur Ubuntu 14.04 LTS

De Get Docs
Aller à :navigation, rechercher

Introduction

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

Apache décompose ses fonctionnalités et ses composants en unités individuelles qui peuvent être personnalisées et configurées indépendamment. L'unité de base qui décrit un site ou un domaine individuel est appelée virtual host.

Ces désignations permettent à l'administrateur d'utiliser un serveur pour héberger plusieurs domaines ou sites à partir d'une seule interface ou adresse IP en utilisant un mécanisme de correspondance. Ceci est pertinent pour quiconque cherche à héberger plus d'un site à partir d'un seul VPS.

Chaque domaine configuré dirigera 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 d'autres sites. Ce schéma est extensible sans aucune limite logicielle tant que votre serveur peut gérer la charge.

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

Conditions préalables

Avant de commencer ce didacticiel, vous devez créer un utilisateur non root comme décrit dans les étapes 1 à 4 ici.

Vous aurez également besoin d'avoir installé Apache pour suivre ces étapes. Si vous ne l'avez pas déjà fait, vous pouvez installer Apache sur votre serveur via apt-get :

sudo apt-get update
sudo apt-get install apache2

Une fois ces étapes terminées, nous pouvons commencer.

Pour les besoins de ce guide, ma configuration créera un hôte virtuel pour example.com et un autre pour test.com. Ceux-ci seront référencés tout au long du guide, mais vous devez remplacer vos propres domaines ou valeurs tout en suivant.

Pour apprendre comment configurer vos noms de domaine avec DigitalOcean, suivez ce lien. Si vous n'avez pas de domaines disponibles pour jouer avec, vous pouvez utiliser des valeurs fictives.

Nous montrerons plus tard comment modifier votre fichier hosts local pour tester la configuration si vous utilisez des valeurs factices. Cela vous permettra de tester votre configuration depuis votre ordinateur personnel, même si votre contenu ne sera pas disponible via le nom de domaine pour les autres visiteurs.

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

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

Notre document root (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. Nous allons créer ici un répertoire pour les deux hôtes virtuels que nous prévoyons de créer.

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 ceci :

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 souhaitons servir depuis notre VPS.

Deuxième étape - Accorder des autorisations

Nous avons maintenant la structure de répertoires pour nos fichiers, mais ils appartiennent à notre utilisateur root. Si nous voulons que notre utilisateur habituel puisse modifier les fichiers de nos répertoires Web, nous pouvons changer le propriétaire en procédant comme suit :

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 auquel vous êtes actuellement connecté lorsque vous appuyez sur « ENTER ». En faisant cela, notre utilisateur régulier possède désormais les sous-répertoires public_html où nous allons stocker notre contenu.

Nous devrions également modifier un peu nos autorisations pour nous assurer que l'accès en lecture est autorisé au répertoire Web général 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 doit maintenant disposer des autorisations nécessaires pour diffuser du contenu et votre utilisateur doit pouvoir créer du contenu dans les dossiers nécessaires.

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

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

Nous allons juste faire une démonstration, donc nos pages seront très simples. Nous allons juste créer une page index.html pour chaque site.

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

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

Dans ce fichier, créez un document HTML simple qui indique le site auquel il est connecté. Mon fichier ressemble à ceci :

Bienvenue sur Example.com !  Succès!  L'hôte virtuel example.com fonctionne !

Enregistrez et fermez le fichier lorsque vous avez terminé.

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

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

On peut alors ouvrir le dossier et modifier les informations pertinentes :

 nano /var/www/ test.com /public_html/index.html
 Bienvenue sur Test.com !  Succès!  L'hôte virtuel test.com fonctionne !

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

Étape 4 - Créer de nouveaux fichiers d'hôte virtuel

Les fichiers d'hôtes virtuels 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 demandes 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 pour créer un fichier d'hôte virtuel pour chacun de nos domaines.

Nous allons commencer avec un domaine, le configurer, le copier pour notre deuxième domaine, puis effectuer 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éer le premier fichier d'hôte virtuel

Commencez par copier le fichier du 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

Le fichier ressemblera à ceci (j'ai supprimé les commentaires ici pour rendre le fichier plus accessible):

 Webmestre de ServerAdmin  @localhost  DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combiné

Comme vous pouvez le voir, il n'y a pas grand-chose ici. Nous allons personnaliser les éléments ici pour notre premier domaine et ajouter quelques directives supplémentaires. Cette section d'hôte virtuel correspond à toutes requêtes effectuées sur le port 80, le port HTTP par défaut.

Tout d'abord, nous devons remplacer la directive ServerAdmin par un e-mail par lequel l'administrateur du site peut recevoir des e-mails.

 Administrateur ServerAdmin  @Exemple  .com

Après cela, nous devons ajouter deux directives. Le premier, appelé ServerName, établit le domaine de base qui doit correspondre à cette définition d'hôte virtuel. Ce sera probablement votre domaine. Le second, appelé ServerAlias, définit d'autres noms qui doivent correspondre comme s'ils étaient le nom de base. Ceci est utile pour faire correspondre les hôtes que vous avez définis, comme www :

 ServerName example.com ServerAlias  www.exemple.com

La seule autre chose que nous devons changer pour un fichier d'hôte virtuel de base est l'emplacement de la racine 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 refléter le répertoire que nous avons créé :

DocumentRoot /var/www/ example.com /public_html

Au total, notre fichier virtualhost devrait ressembler à ceci :

 Administrateur ServerAdmin  @Exemple  .com ServerName exemple.com ServerAlias  www.exemple.com  DocumentRoot /var/www/ example.com /public_html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combiné

Enregistrez et fermez le fichier.

Copier le premier hôte virtuel et personnaliser pour le deuxième domaine

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

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 toutes les informations pour référencer votre deuxième domaine. Lorsque vous avez terminé, cela peut ressembler à ceci :

 Administrateur ServerAdmin  @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 combiné

Enregistrez et fermez le fichier lorsque vous avez terminé.

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

Maintenant que nous avons créé nos fichiers d'hôte virtuel, nous devons les activer. Apache inclut quelques outils qui nous permettent de faire cela.

Nous pouvons utiliser l'outil a2ensite pour activer chacun de nos sites comme ceci :

sudo a2ensite exemple.com .conf sudo a2ensite test.com .conf

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

sudo service apache2 restart

Vous recevrez très probablement un message disant quelque chose de similaire à :

 * Restarting web server apache2
 AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message

Ceci est un message inoffensif qui n'affecte pas notre site.

Sixième étape - Configurer 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 utilisé des exemples de domaines à la place, vous pouvez au moins tester la fonctionnalité de ce processus en modifiant temporairement le fichier hosts sur votre local ordinateur.

Cela interceptera toutes les requêtes pour les domaines que vous avez configurés et les dirigera vers votre serveur VPS, tout comme le ferait le système DNS si vous utilisiez des domaines enregistrés. Cependant, cela ne fonctionnera qu'à partir de votre ordinateur et est simplement utile à des fins de test.

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

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

sudo nano /etc/hosts

Si vous êtes sur une machine 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 serveur VPS suivie du domaine que vous souhaitez utiliser pour atteindre ce VPS.

Pour les domaines que j'ai utilisés dans ce guide, en supposant que mon adresse IP VPS est 111.111.111.111, je pourrais ajouter les lignes suivantes au bas de mon fichier hosts :

 127.0.0.1 localhost 127.0.1.1 bureau invité 111.111.111.111  exemple.com  111.111.111.111  test.com

Cela dirigera toutes les demandes de example.com et test.com sur notre ordinateur et les enverra à notre serveur à 111.111.111.111. C'est ce que nous voulons si nous ne sommes pas réellement propriétaires de ces domaines afin de tester nos hôtes virtuels.

Enregistrez et fermez le fichier.

Septième étape - Testez vos résultats

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

http://exemple.com

Vous devriez voir une page qui ressemble à ceci :

De même, si vous pouvez visiter votre deuxième page :

http://test.com

Vous verrez le fichier que vous avez créé pour votre deuxième site :

Si ces deux sites fonctionnent bien, vous avez configuré avec succès deux hôtes virtuels sur le même serveur.

Si vous avez modifié le fichier hosts de votre ordinateur personnel, vous souhaiterez peut-être supprimer les lignes que vous avez ajoutées maintenant que vous avez vérifié que votre configuration fonctionne. Cela empêchera votre fichier hosts d'être rempli d'entrées qui ne sont pas réellement nécessaires.

Si vous avez besoin d'accéder à ce long terme, pensez à acheter un nom de domaine pour chaque site dont vous avez besoin et configurez-le pour qu'il pointe vers votre serveur VPS.

Conclusion

Si vous avez suivi, vous devriez maintenant avoir un seul serveur gérant deux noms de domaine distincts. Vous pouvez étendre ce processus en suivant les étapes 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 créer autant que votre serveur est capable de gérer.

Par Justin Ellingwood