CodeGym /Cours /Docker SELF /Configuration des hôtes virtuels

Configuration des hôtes virtuels

Docker SELF
Niveau 7 , Leçon 1
Disponible

Configuration des hôtes virtuels

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

Imagine que tu ouvres un café sympa. La majorité des clients viennent pour un café ☕, mais parfois quelqu'un commande un thé 🍵. Au lieu d'ouvrir un établissement séparé pour les amateurs de thé, tu as juste créé un petit coin pour eux. Dans le monde des serveurs web, ce concept s'appelle les hôtes virtuels. Ils permettent à ton serveur de gérer plusieurs sites (avec différents domaines) tout en ayant un seul serveur physique.

Types d'hôtes virtuels

  1. Basé sur les adresses IP — chaque site reçoit une adresse IP unique. C'est comme une zone VIP à un concert : chaque client avec un billet VIP a sa place.
  2. Basé sur les noms de domaine — plusieurs sites peuvent partager une seule adresse IP. Ici, le serveur utilise le nom d'hôte (nom de domaine) de la requête du client pour comprendre quel site afficher. C'est l'option la plus courante et pratique pour la plupart des projets.

2. Configuration d'un hôte virtuel dans Nginx

1. Création d'un nouvel hôte virtuel

Pour configurer un hôte virtuel, il faut d'abord créer un fichier de configuration. Ce fichier contiendra des informations sur la façon dont le serveur doit gérer les requêtes pour un domaine spécifique.

Créons un fichier pour notre site, par exemple example.com :

sudo nano /etc/nginx/sites-available/example.com

Ajoutons le bloc de configuration suivant :

server {
    listen 80;
    server_name example.com www.example.com;

    root /var/www/example.com;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

Analysons le code en détail :

  • listen 80; : Indique que le serveur écoutera sur le port 80 (utilisé par défaut pour HTTP).
  • server_name example.com www.example.com; : Définit les noms de domaine auxquels le serveur doit répondre.
  • root /var/www/example.com; : La directive indique le répertoire racine où sont stockés les fichiers du site.
  • index index.html; : Spécifie le fichier qui sera utilisé comme "page d'accueil" du site.
  • location / { try_files $uri $uri/ =404; } : Configuration du routage des requêtes. Si le fichier ou le répertoire n'est pas trouvé, une erreur 404 est renvoyée.

2. Activation de la configuration

Il est maintenant temps "d'activer" notre hôte virtuel. Dans Nginx, cela se fait via des liens symboliques :

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

Puis, vérifions qu'il n'y a pas d'erreurs dans la configuration :

sudo nginx -t

Si tout est OK, redémarrons le serveur :

sudo systemctl reload nginx

3. Vérification du fonctionnement

Créons un dossier pour les fichiers du site :

sudo mkdir -p /var/www/example.com
sudo nano /var/www/example.com/index.html

Ajoutons le simple code HTML suivant :

<h1>Bienvenue sur example.com !</h1>
<p>Votre serveur Nginx est prêt à fonctionner.</p>

Sauvons le fichier, puis ouvrons http://example.com dans notre navigateur. Si nous voyons un message de bienvenue, cela signifie que l'hôte virtuel fonctionne !

4. Liens symboliques sous Linux

Les liens symboliques (ou soft links, symlinks) sont des objets de fichier spéciaux qui pointent vers un autre fichier ou répertoire. Ils fonctionnent comme des "raccourcis" sous Windows, permettant d'accéder au fichier ou dossier cible via un chemin alternatif.

Les liens symboliques contiennent le chemin de l'objet original, et non l'objet lui-même. Si le fichier ou le dossier original est déplacé ou supprimé, le lien devient "cassé", car il ne pointe plus vers un objet existant.

Commande pour créer un lien symbolique :

ln -s target link_name
  • target — chemin vers l'objet d'origine.
  • link_name — nom du lien.

Exemple :

ln -s /var/log/syslog log_link

Maintenant via log_link, on peut accéder au fichier /var/log/syslog.

Utilisations :

  • Simplifier la navigation.
  • Créer des points d'accès alternatifs aux fichiers.
  • Organiser les répertoires.

3. Configuration d'un hôte virtuel dans Apache

1. Création du fichier de configuration

Apache utilise une autre approche. Ici, les configurations pour les hôtes virtuels se trouvent dans le dossier /etc/apache2/sites-available/. Créons un fichier pour notre site :

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

Ajoutons le code suivant :

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com

    DocumentRoot /var/www/example.com
    <Directory /var/www/example.com>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

Petite explication :

  • <VirtualHost *:80>: Indique que la configuration s'applique à toutes les requêtes sur le port 80.
  • ServerName et ServerAlias: Définissent le nom de domaine principal et les noms supplémentaires pour le site.
  • DocumentRoot: Spécifie le dossier racine du site.
  • <Directory>: Bloc qui définit les droits d'accès et le comportement pour le répertoire spécifié.

2. Activation de la configuration

Pour activer la configuration, on utilise la commande suivante :

sudo a2ensite example.com.conf

Redémarrons le serveur pour appliquer les changements :

sudo systemctl restart apache2

3. Vérification du fonctionnement

Encore une fois, créons un dossier et un fichier pour le site :

sudo mkdir -p /var/www/example.com
sudo nano /var/www/example.com/index.html

Remplissons-le avec ce contenu :

<h1>Bienvenue sur example.com avec Apache !</h1>

Sauvons et ouvrons dans un navigateur : http://example.com. Si vous voyez une page d'accueil — félicitations, vous avez configuré un hôte virtuel dans Apache !


4. Vérification et gestion de plusieurs hôtes

Configurer un deuxième hôte virtuel

Disons que tu veux configurer un deuxième site : test.com. Le processus est le même :

  1. Crée un nouveau fichier de configuration.
  2. Indique un nom de domaine unique et un dossier racine.
  3. Active la configuration et redémarre le serveur.

Pour Nginx :

sudo nano /etc/nginx/sites-available/test.com
sudo ln -s /etc/nginx/sites-available/test.com /etc/nginx/sites-enabled/
sudo systemctl reload nginx

Pour Apache :

sudo nano /etc/apache2/sites-available/test.com.conf
sudo a2ensite test.com.conf
sudo systemctl restart apache2

Déboguer les problèmes

Si tes hôtes virtuels ne fonctionnent pas, commence par vérifier les erreurs. Par exemple :

  • Pour Nginx :

      sudo tail -f /var/log/nginx/error.log
    
  • Pour Apache :

      sudo tail -f /var/log/apache2/error.log
    

Tu peux également utiliser la commande curl pour tester directement le site :

curl -I http://example.com

Maintenant, tu peux configurer les hôtes virtuels et lancer plusieurs sites sur un seul serveur. Aller de pair avec cela, la configuration de HTTPS est essentielle pour sécuriser tes sites. Mais ça, c'est pour la prochaine conférence !

Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION