Comment configurer des hôtes virtuels Apache sur Ubuntu 16.04

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 pouvant être personnalisées et configurées indépendamment. L'unité de base qui décrit un site ou un domaine individuel est appeléevirtual 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 à l'aide d'un mécanisme de correspondance. Ceci est pertinent pour ceux qui cherchent à héberger plus d'un site sur 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 des autres sites. Ce schéma est extensible sans limite de logiciel 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 16.04. Au cours de ce processus, vous apprendrez à diffuser un contenu différent à différents visiteurs en fonction du domaine demandé.

Conditions préalables

Avant de commencer ce didacticiel, vous devezcreate a non-root user comme décrit dans les étapes 1 à 4 ici.

Vous devrez également installer Apache pour pouvoir suivre ces étapes. Si vous ne l’avez pas déjà fait, vous pouvez installer Apache sur votre serveur viaapt-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, notre configuration créera un hôte virtuel pourexample.com et un autre pourtest.com. Celles-ci seront référencées tout au long du guide, mais vous devrez remplacer vos propres domaines ou valeurs par la suite.

Pour apprendrehow to set up your domain names with DigitalOcean, suivez ce lien. Si vous avez des domaines disponibles pournot, vous pouvez utiliser des valeurs factices.

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

[[step-one -—- create-the-directory-structure]] == Step One - Créer 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.

Nosdocument root (le répertoire de niveau supérieur qu'Apache regarde pour trouver le contenu à servir) seront définis sur des répertoires individuels sous le répertoire/var/www. Nous allons créer un répertoire ici pour les deux hôtes virtuels que nous prévoyons de créer.

Dans chacun des répertoiresthese, nous allons créer un dossierpublic_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 annuaires comme suit:

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 à partir de notre VPS.

[[step-two -—- grant-permissions]] == Étape deux - 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 sous lequel vous êtes actuellement connecté lorsque vous appuyez surEnter. En faisant cela, notre utilisateur régulier possède maintenant les sous-répertoirespublic_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:

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.

[[step-three -—- create-demo-pages-for-each-virtual-host]] == Étape trois - 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, alors nos pages seront très simples. Nous allons simplement créer une pageindex.html pour chaque site.

Commençons parexample.com. Nous pouvons ouvrir un fichierindex.html dans notre éditeur en tapant:

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

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

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


  
    Welcome to Example.com!
  
  
    

Success! The example.com virtual host is working!

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

Nous pouvons ensuite ouvrir le fichier et modifier les informations pertinentes:

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

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


  
    Welcome to Test.com!
  
   

Success! The test.com virtual host is working!

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

[[step-four -—- create-new-virtual-host-files]] == Étape quatre - 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 déterminent comment le serveur Web Apache répondra aux différentes demandes de domaine.

Apache est livré avec un fichier 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 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 Ubuntu par défaut nécessite 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 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

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

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


    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

Comme vous pouvez le constater, il n’ya 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 aux requêtesany effectuées sur le port 80, le port HTTP par défaut.

Tout d'abord, nous devons changer la directiveServerAdmin en un e-mail par lequel l'administrateur du site peut recevoir des e-mails.

ServerAdmin [email protected]

Après cela, nous devonsadd 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'il s'agissait du nom de base. Ceci est utile pour faire correspondre les hôtes que vous avez définis, commewww:

ServerName example.com
ServerAlias www.example.com

La seule autre chose à modifier 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 directiveDocumentRoot 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:

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


    ServerAdmin [email protected]
    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

Enregistrez et fermez le fichier.

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

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

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:

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


    ServerAdmin [email protected]
    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

Enregistrez et fermez le fichier lorsque vous avez terminé.

[[step-five -—- enable-the-new-virtual-host-files]] == Étape cinq - Activer les nouveaux fichiers d'hôte virtuel

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

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

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

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

sudo a2dissite 000-default.conf

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

sudo systemctl restart apache2

Dans une autre documentation, vous pouvez également voir un exemple utilisant la commandeservice:

sudo service apache2 restart

Cette commande fonctionnera toujours, mais elle ne donnera peut-être pas le résultat que vous avez l'habitude de voir sur d'autres systèmes, car c'est désormais un wrapper autour dessystemctl de systemd.

[[step-six -—- set-up-local-hosts-file-optional]] == Sixième étape - Configurer le 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 avez utilisé des exemples de domaines à la place, vous pouvez au moins tester la fonctionnalité de ce processus en modifiant temporairement le fichierhosts 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 est simplement utile à des fins de test.

Assurez-vous que vous opérez 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 d'administration.

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 sur une machine Windows, vous pouvezfind instructions on altering your hosts file 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 serveur VPS.

Pour les domaines que j'ai utilisés dans ce guide, en supposant que mon adresse IP VPS est111.111.111.111, je pourrais ajouter les lignes suivantes au bas de mon fichier d'hôtes:

/etc/hosts

127.0.0.1   localhost
127.0.1.1   guest-desktop
111.111.111.111 example.com
111.111.111.111 test.com

Cela dirigera toutes les demandes deexample.com ettest.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.

[[step-seven -—- test-your-results]] == Étape sept - 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://example.com

Vous devriez voir une page qui ressemble à ceci:

Apache virt host example

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:

Apache virt host test

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

Si vous avez ajusté le fichier hôtes 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 hôtes d'être rempli avec des entrées qui ne sont pas réellement nécessaires.

Si vous avez besoin d'accéder à ce long terme, envisagez d'acheter un nom de domaine pour chaque site dont vous avez besoin etsetting it up to point to your VPS server.

Conclusion

Si vous avez suivi, vous devriez maintenant avoir un seul serveur gérant deux noms de domaine distincts. Vous pouvez développer 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. N'hésitez donc pas à en créer autant que votre serveur est capable de gérer.