Comment configurer des hôtes virtuels Apache sur Debian 8

introduction

Le serveur Web Apache est le moyen le plus répandu de servir 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 divise ses fonctionnalités et ses composants en unités individuelles que vous pouvez personnaliser indépendamment. L’unité de base qui décrit un site ou un domaine individuel est appelée un hôte virtuel.

À l’aide d’hôtes virtuels, vous pouvez utiliser un serveur pour héberger plusieurs domaines ou sites à partir d’une seule interface ou d’une adresse IP à l’aide d’un mécanisme de correspondance. Vous configurez une demande pour un domaine afin de diriger le visiteur vers un répertoire spécifique contenant les informations de ce site. En d’autres termes, vous pouvez héberger plusieurs sites Web sur un même serveur. Ce schéma est extensible sans limite de logiciel tant que votre serveur peut gérer la charge.

Dans ce tutoriel, vous allez configurer deux hôtes virtuels Apache sur un serveur Debian 8, en fournissant un contenu différent aux visiteurs en fonction du domaine qu’ils visitent.

Conditions préalables

Pour compléter ce tutoriel, vous aurez besoin de:

Dans ce guide, nous allons créer des hôtes virtuels pour + example.com + et + test.com +, mais vous pouvez remplacer vos propres domaines ou valeurs par la suite. Pour pointer vos noms de domaine sur votre serveur, suivez notre tutoriel Comment configurer un hôte Nom avec DigitalOcean.

Si vous ne disposez pas de domaines sur lesquels vous pouvez jouer, vous pouvez utiliser + example.com + et + test.com + et suivre l’étape 5 de ce tutoriel pour configurer votre fichier d’hôtes local afin de mapper ces domaines sur l’adresse IP de votre serveur. . Cela vous permettra de tester votre configuration à partir de votre ordinateur local.

Étape 1 - Création de la structure de répertoire

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

Notre document root, le répertoire de niveau supérieur que Apache recherche pour trouver le contenu à servir, sera défini sur des répertoires individuels sous le répertoire + / var / www +. Nous allons créer un répertoire pour chacun des hôtes virtuels que nous allons configurer.

Dans chacun de ces répertoires, nous allons créer un dossier appelé + public_html + qui contiendra les pages Web que nous voulons servir. Cela nous donne un peu plus de flexibilité dans la manière dont nous déploierons des applications Web plus complexes à l’avenir; le dossier + public_html + contiendra le contenu Web que nous voulons servir, et le dossier parent peut contenir des scripts ou du code d’application pour prendre en charge le contenu Web.

Créez les répertoires à l’aide des commandes suivantes:

sudo mkdir -p /var/www//public_html
sudo mkdir -p /var/www//public_html

Depuis que nous avons créé les répertoires avec + sudo +, ils sont la propriété de notre utilisateur root. Si nous voulons que notre utilisateur habituel puisse modifier les fichiers de nos répertoires Web, nous en changeons le propriétaire, comme ceci:

sudo chown -R $USER:$USER /var/www//public_html
sudo chown -R $USER:$USER /var/www//public_html

La variable + $ USER + utilise la valeur de l’utilisateur avec lequel vous êtes actuellement connecté lorsque vous appuyez sur + ENTER +. Ce faisant, notre utilisateur habituel possède maintenant 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é pour le répertoire Web général et tous les fichiers et dossiers qu’il contient afin que les pages puissent être servies correctement. Exécutez cette commande pour modifier les autorisations sur le dossier + / var / www + et ses enfants:

sudo chmod -R 755 /var/www

Si vous débutez dans la gestion des autorisations sous Linux, voir ce tutoriel.

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. Créons un fichier HTML pour chaque site.

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

Étape 2 - Création de pages par défaut pour chaque hôte virtuel

Créons une simple page + index.html pour chaque site. Cela nous aidera à nous assurer que nos hôtes virtuels sont configurés correctement par la suite.

Commençons par la page de + exemple.com +. Editez un nouveau fichier + index.html avec la commande suivante:

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

Dans ce fichier, créez un simple document HTML indiquant que le visiteur regarde la page d’accueil de `+ example.com +’:

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

<html>
 <head>
   <title>Welcome to !</title>
 </head>
 <body>
   <h1>Success! The  virtual host is working!</h1>
 </body>
</html>

Enregistrez et fermez le fichier lorsque vous avez terminé.

Maintenant, copiez ce fichier sur le site + test.com +:

cp /var/www//public_html/index.html /var/www//public_html/index.html

Puis ouvrez le fichier dans votre éditeur:

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

Modifiez le fichier afin qu’il fasse référence à + ​​test.com + au lieu de + exemple.com +:

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

<html>
 <head>
   <title>Welcome to !</title>
 </head>
 <body> <h1>Success! The  virtual host is working!</h1>
 </body>
</html>

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

Étape 3 - Créer de nouveaux fichiers d’hôte virtuel

Les fichiers d’hôtes virtuels spécifient la configuration réelle de nos hôtes virtuels et déterminent comment le serveur Web Apache répondra aux différentes demandes de domaine.

Apache est fourni avec un fichier d’hôte virtuel par défaut appelé + 000-default.conf + que vous pouvez utiliser comme point de départ. Copiez ce fichier pour le premier domaine:

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

Ouvrez le nouveau fichier dans votre éditeur:

sudo nano /etc/apache2/sites-available/.conf

Le fichier ressemblera à l’exemple suivant, avec quelques commentaires supplémentaires:

/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>

Cet hôte virtuel correspond aux any requêtes effectuées sur le port + 80 +, le port HTTP par défaut. Apportons quelques modifications à cette configuration et ajoutons quelques nouvelles directives.

Commencez par remplacer la directive + ServerAdmin + par un courrier électronique permettant à l’administrateur du site de recevoir des courriers électroniques.

/etc/apache2/sites-available/example.com.conf

ServerAdmin

Ensuite, nous devons ajouter deux nouvelles directives. Le premier, appelé + NomServeur +, établit le domaine de base pour cette définition d’hôte virtuel. La seconde, appelée + 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 supplémentaires que vous avez définis. Ainsi, les deux + example.com + et + www.example.com + fonctionnent, à condition que ces deux hôtes pointent vers l’adresse IP de ce serveur.

Ajoutez ces deux directives à votre fichier de configuration, juste après la ligne + ServerAdmin +:

/etc/apache2/sites-available/example.com.conf

<VirtualHost *:80>

       ServerAdmin webmaster@localhost


       DocumentRoot /var/www/html
...

Ensuite, modifiez l’emplacement de la racine du document pour ce domaine en modifiant la directive + DocumentRoot + pour qu’elle pointe vers le répertoire que vous avez créé pour cet hôte:

DocumentRoot /var/www//public_html

Une fois ces modifications apportées, votre fichier devrait ressembler à ceci:

/etc/apache2/sites-available/example.com.conf

<VirtualHost *:80>
       ServerAdmin


       DocumentRoot /var/www//public_html
       ErrorLog ${APACHE_LOG_DIR}/error.log
       CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Enregistrez et fermez le fichier.

Créez ensuite le deuxième fichier de configuration en créant une copie de ce fichier:

sudo cp /etc/apache2/sites-available/.conf /etc/apache2/sites-available/.conf

Ouvrez le nouveau fichier dans votre éditeur:

sudo nano /etc/apache2/sites-available/.conf

Modifiez ensuite les paramètres appropriés pour référencer votre deuxième domaine. Lorsque vous aurez terminé, votre fichier ressemblera à ceci:

/etc/apache2/sites-available/test.com.conf

<VirtualHost *:80>
   ServerAdmin
   ServerName
   ServerAlias
   DocumentRoot /var/www//public_html
   ErrorLog ${APACHE_LOG_DIR}/error.log
   CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Enregistrez et fermez le fichier.

Maintenant que nous avons créé nos fichiers d’hôte virtuel, nous pouvons les activer.

Étape 4 - Activer les nouveaux fichiers d’hôte virtuel

Vous avez créé les dossiers et les fichiers de configuration de l’hôte virtuel, mais Apache ne les utilisera pas tant que vous ne les aurez pas activés. Vous pouvez utiliser l’outil + a2ensite + pour activer chacun de vos sites.

Activer le premier site:

sudo a2ensite .conf

Vous verrez le résultat suivant s’il n’ya pas d’erreurs de syntaxe ou de fautes de frappe dans votre fichier:

OutputEnabling site example.com.
To activate the new configuration, you need to run:
 service apache2 reload

Pour que vos modifications prennent effet, vous devez recharger Apache. Mais avant cela, activez l’autre site:

sudo a2ensite .conf

Vous verrez un message similaire indiquant que le site a été activé:

OutputEnabling site test.com.
To activate the new configuration, you need to run:
 service apache2 reload

Ensuite, désactivez le site par défaut défini dans + 000-default.conf + en utilisant la commande + a2dissite +:

sudo a2dissite 000-default.conf

Maintenant, redémarrez Apache:

sudo systemctl restart apache2

Les sites sont maintenant configurés. Laissez-les tester. Si vous utilisez des domaines réels configurés pour pointer vers l’adresse IP de votre serveur, vous pouvez ignorer l’étape suivante. Mais si vos domaines ne sont pas encore propagés ou si vous êtes en train de tester, continuez votre lecture pour savoir comment tester cette configuration à l’aide de votre ordinateur local.

Étape 5 - Configuration du fichier d’hôtes locaux (facultatif)

Si vous n’avez pas utilisé les noms de domaine que vous possédez pour tester cette procédure et que vous utilisiez plutôt des exemples de domaines, vous pouvez au moins tester la fonctionnalité de ce processus 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 dirigera vers votre serveur VPS, comme le ferait le système DNS si vous utilisiez des domaines enregistrés. Cela ne fonctionnera que sur votre ordinateur et n’est utile que pour des tests.

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

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

sudo nano /etc/hosts

Si vous êtes sous Windows, ouvrez une invite de commande avec des privilèges d’administrateur et tapez:

notepad %windir%\system32\drivers\etc\hosts

Une fois le fichier ouvert, ajoutez une ligne qui mappe l’adresse IP publique de votre serveur sur chaque nom de domaine, comme indiqué dans l’exemple suivant:

/ etc / hosts

127.0.0.1   localhost
...

Cela dirigera toutes les demandes de + example.com + et + test.com + sur votre ordinateur et les enverra à votre serveur à + ​​111.111.111.111 +.

Enregistrez et fermez le fichier. Vous pouvez maintenant tester votre configuration. Lorsque vous êtes certain que les choses fonctionnent, supprimez les deux lignes du fichier.

Étape 6 - Tester 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. Visitez le premier site sur + http: // example.com + et vous verrez une page qui ressemble à ceci:

image: https: //assets.digitalocean.com/articles/apache_vhosts_debian8/hPVmDq1.png [résultat Apache exemple.com]

De même, si vous pouvez visiter votre deuxième hôte sur + http: // test.com +, vous verrez le fichier que vous avez créé pour votre deuxième site:

image: https: //assets.digitalocean.com/articles/apache_vhosts_debian8/Mh9EbW3.png [résultat Apache test.com]

Si ces deux sites fonctionnent correctement, vous avez correctement configuré deux hôtes virtuels sur le même serveur.

Conclusion

Vous avez maintenant un seul serveur gérant deux noms de domaine distincts. Vous pouvez développer ce processus en suivant ces étapes 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 à en créer autant que votre serveur est capable de gérer.

Pour utiliser Apache pour diffuser du contenu sécurisé, suivez le didacticiel Comment sécuriser Apache avec Let’s Encrypt sur Debian 8. Pour utiliser Apache devant votre application Web, suivez https://www.digitalocean.com/community/tutorials/how-to-use-apache-as-a-rere-proxy-with-mod_proxy-on-debian-8. [Comment utiliser Apache en tant que proxy inverse avec mod_proxy sur Debian 8].