Recherche de site Web

Comment configurer des hôtes virtuels Apache sous Ubuntu 18.04 LTS


Qu'est-ce que les hôtes virtuels Apache ?

Hôte virtuel est un terme qui désigne la méthode permettant d'exécuter plus d'un site web tel que host1.domain.com, host2.domain.com, ou www.domain1.com, www.domain2.com, etc., sur un seul système. Il existe deux types d'hébergement virtuel dans Apache, à savoir l'hébergement virtuel basé sur l'IP et l'hébergement virtuel basé sur le nom. Avec l'hébergement virtuel basé sur l'IP, vous pouvez héberger plusieurs sites web ou domaines sur le même système, mais chaque site web/domaine possède une adresse IP différente. Avec l'hébergement virtuel basé sur le nom, vous pouvez héberger plusieurs sites web/domaines sur la même adresse IP. L'hébergement virtuel peut être utile si vous souhaitez héberger plusieurs sites web et domaines à partir d'un seul serveur physique ou VPS. J'espère que vous avez compris le principe de base des hôtes virtuels Apache. Aujourd'hui, nous allons voir comment configurer les hôtes virtuels Apache sur Ubuntu 18.04 LTS.

Configurer les hôtes virtuels Apache sur Ubuntu 18.04 LTS

L'adresse IP de ma boîte de test est 192.168.225.22 et le nom de l'hôte est ubuntuserver.

Tout d'abord, nous verrons comment configurer des hôtes virtuels basés sur le nom dans le serveur web Apache.

Configurer des hôtes virtuels basés sur le nom

1. Installer le serveur web Apache

Assurez-vous d'avoir installé le serveur web Apache. Pour l'installer sur Ubuntu, exécutez :

$ sudo apt-get install apache2

Une fois Apache installé, testez s'il fonctionne ou non en naviguant sur la page de test Apache dans le navigateur.

Ouvrez votre navigateur web et allez à http://IP_Address ou http://localhost. Vous devriez voir une page comme ci-dessous.

Bien ! Le serveur web Apache est en marche et fonctionne !!

2. Créer un répertoire web pour chaque hôte

Je vais créer deux hôtes virtuels, à savoir ostechnix1.lan et ostechnix2.lan.

Créons un répertoire pour le premier hôte virtuel ostechnix1.lan. Ce répertoire est nécessaire pour stocker les données de nos hôtes virtuels.

Pour ce faire, entrez :

$ sudo mkdir -p /var/www/html/ostechnix1.lan/public_html

De même, créez un répertoire pour le second hôte virtuel ostechnix2.lan comme indiqué ci-dessous.

$ sudo mkdir -p /var/www/html/ostechnix2.lan/public_html

Les deux répertoires ci-dessus appartiennent à l'utilisateur root. Nous devons changer la propriété pour l'utilisateur régulier.

Pour ce faire, exécutez :

$ sudo chown -R $USER:$USER /var/www/html/ostechnix1.lan/public_html
$ sudo chown -R $USER:$USER /var/www/html/ostechnix2.lan/public_html

Ici, $USER fait référence à l'utilisateur actuellement connecté.

Ensuite, définissez les permissions de lecture sur le répertoire racine d'Apache, c'est-à-dire /var/www/html/, en utilisant la commande :

$ sudo chmod -R 755 /var/www/html/

Nous faisons cela parce que nous avons déjà créé un répertoire séparé pour chaque hôte virtuel afin de stocker leurs données. Nous avons donc rendu le répertoire racine d'Apache en lecture seule pour tous les utilisateurs sauf l'utilisateur root.

Nous avons créé les répertoires nécessaires pour stocker les données de chaque hôte virtuel et configuré les permissions appropriées. Il est maintenant temps de créer quelques pages d'exemple qui seront servies depuis chaque hôte virtuel.

3. Créez des pages web de démonstration pour chaque hôte

Créons une page d'exemple pour le site ostechnix1.lan. Pour ce faire, exécutez :

$ sudo vi /var/www/html/ostechnix1.lan/public_html/index.html

Ajoutez les lignes suivantes dedans :

<html>
 <head>
 <title>www.ostechnix.lan</title>
 </head>
 <body>
 <h1>Hello, This is a test page for ostechnix1.lan website</h1>
 </body>
</html>

Enregistrez et fermez le fichier.

De même, créez une page d'exemple pour le site ostechnix2.lan :

$ sudo vi /var/www/html/ostechnix2.lan/public_html/index.html

Ajoutez les lignes suivantes dedans :

<html>
 <head>
 <title>www.ostechnix.lan</title>
 </head>
 <body>
 <h1>Hello, This is a test page for ostechnix2.lan website</h1>
 </body>
</html>

Enregistrez et fermez le fichier.

4. Créez un fichier de configuration pour chaque hôte

Ensuite, nous devons créer des fichiers de configuration pour chaque hôte virtuel. Tout d'abord, faisons-le pour le site ostechnix1.lan.

Copiez le contenu du fichier d'hôte virtuel par défaut appelé 000-default.conf dans les nouveaux fichiers d'hôte virtuel comme ci-dessous.

$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/ostechnix1.lan.conf
$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/ostechnix2.lan.conf

Veuillez noter que vous devez enregistrer tous les fichiers de configuration avec l'extension .conf à la fin, sinon cela ne fonctionnera pas.

Maintenant, modifiez les fichiers de configuration pour qu'ils correspondent à nos hôtes virtuels.

Modifier le fichier ostechnix.lan1.conf :

$ sudo vi /etc/apache2/sites-available/ostechnix1.lan.conf

Modifier/mettre à jour les valeurs de ServerAdmin, ServerName, ServerAlias et DocumentRoot pour correspondre à l'hôte virtuel.

<VirtualHost *:80>
 # The ServerName directive sets the request scheme, hostname and port that
 # the server uses to identify itself. This is used when creating
 # redirection URLs. In the context of virtual hosts, the ServerName
 # specifies what hostname must appear in the request's Host: header to
 # match this virtual host. For the default virtual host (this file) this
 # value is not decisive as it is used as a last resort host regardless.
 # However, you must set it for any further virtual host explicitly.
 #ServerName www.example.com

   ServerAdmin webmaster@ostechnix1.lan
   ServerName ostechnix1.lan
   ServerAlias www.ostechnix1.lan
   DocumentRoot /var/www/html/ostechnix1.lan/public_html

# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
 # error, crit, alert, emerg.
 # It is also possible to configure the loglevel for particular
 # modules, e.g.
 #LogLevel info ssl:warn

ErrorLog ${APACHE_LOG_DIR}/error.log
 CustomLog ${APACHE_LOG_DIR}/access.log combined

# For most configuration files from conf-available/, which are
 # enabled or disabled at a global level, it is possible to
 # include a line for only one particular virtual host. For example the
 # following line enables the CGI configuration for this host only
 # after it has been globally disabled with "a2disconf".
 #Include conf-available/serve-cgi-bin.conf
</VirtualHost>

Enregistrez et fermez le fichier.

Ensuite, modifiez le fichier ostechnix2.lan.conf :

$ sudo vi /etc/apache2/sites-available/ostechnix2.lan.conf

Apportez les modifications nécessaires.

<VirtualHost *:80>
 # The ServerName directive sets the request scheme, hostname and port that
 # the server uses to identify itself. This is used when creating
 # redirection URLs. In the context of virtual hosts, the ServerName
 # specifies what hostname must appear in the request's Host: header to
 # match this virtual host. For the default virtual host (this file) this
 # value is not decisive as it is used as a last resort host regardless.
 # However, you must set it for any further virtual host explicitly.
 #ServerName www.example.com

    ServerAdmin webmaster@ostechnix2.lan
    ServerName ostechnix2.lan
    ServerAlias www.ostechnix2.lan
    DocumentRoot /var/www/html/ostechnix2.lan/public_html

# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
 # error, crit, alert, emerg.
 # It is also possible to configure the loglevel for particular
 # modules, e.g.
 #LogLevel info ssl:warn

ErrorLog ${APACHE_LOG_DIR}/error.log
 CustomLog ${APACHE_LOG_DIR}/access.log combined

# For most configuration files from conf-available/, which are
 # enabled or disabled at a global level, it is possible to
 # include a line for only one particular virtual host. For example the
 # following line enables the CGI configuration for this host only
 # after it has been globally disabled with "a2disconf".
 #Include conf-available/serve-cgi-bin.conf
</VirtualHost>

Enregistrez/fermez le fichier.

5. Activer les fichiers de configuration des hôtes virtuels

Après avoir effectué les modifications nécessaires, désactivez le fichier de configuration de l'hôte virtuel par défaut, c'est-à-dire 000.default.conf, et activez tous les fichiers de configuration d'hôtes virtuels nouvellement créés comme indiqué ci-dessous.

$ sudo a2dissite 000-default.conf
$ sudo a2ensite ostechnix1.lan.conf
$ sudo a2ensite ostechnix2.lan.conf

Redémarrez le serveur web Apache pour que les modifications prennent effet.

$ sudo systemctl restart apache2

C'est tout. Nous avons configuré avec succès des hôtes virtuels dans Apache. Vérifions maintenant s'ils fonctionnent ou non.

6. Tester les hôtes virtuels

Ouvrez le fichier /etc/hosts dans n'importe quel éditeur :

$ sudo vi /etc/hosts

Ajoutez tous vos sites web/domaines virtuels un par un comme ci-dessous.

[...]
192.168.225.22   ostechnix1.lan
192.168.225.22   ostechnix2.lan
[...]

Veuillez noter que si vous souhaitez accéder aux hôtes virtuels depuis n'importe quel système distant, vous devez ajouter les lignes ci-dessus dans le fichier /etc/hosts de chaque système distant.

Enregistrez et fermez le fichier.

Ouvrez votre navigateur web et dirigez-le vers http://ostechnix1.lan ou http://ostechnix2.lan.

Page de test ostechnix1.lan :

Page de test ostechnix2.lan :

Félicitations ! Vous pouvez désormais accéder à tous vos sites web. À partir de maintenant, vous pouvez télécharger les données et les servir depuis différents sites web.

Comme vous l'avez remarqué, nous avons utilisé la même adresse IP (c'est-à-dire 192.168.225.22) pour héberger deux sites Web différents (http://ostechnix1.lan et http://ostechnix2.lan). C'est ce que l'on appelle l'hébergement virtuel basé sur le nom. J'espère que cela vous aide. Je vous montrerai comment configurer l'hébergement virtuel basé sur l'IP dans le prochain guide. D'ici là, restez à l'écoute !

Ressource :

  • Documentation sur les hôtes virtuels Apache