Vous souhaitez créer des virtualhosts avec un serveur web Apache ? Je vous propose un petit guide tutoriel avec les différentes étapes pour la mise en place de vos différents virtualhost dans le serveur web Apache2.

Les VirtualHosts, ou hôtes virtuels, permettent à un serveur Apache de servir plusieurs sites web à partir d’une seule adresse IP. Cela signifie que vous pouvez héberger plusieurs domaines ou sous-domaines, chacun avec ses propres configurations, sur un même serveur. Cela permet d’optimiser l’utilisation des ressources serveur et une gestion plus flexible des sites web.

Créer les dossiers des sites internet

Dans un premier temps, il faut déjà avoir un serveur web Apache2 d’installé. Si vous ne l’avez pas déjà fait, vous pouvez regarder ce tutoriel sur l‘installation d’un serveur LAMP.

Configuration du réseau local :

Le réseau local

Le serveur web que je vais utiliser à l’adresse IP 192.168.30.253 et he vais me connecter au site internet depuis le serveur Windows 192.168.30.254.

Je vais créer deux virtualhosts, permettant d’atteindre les URL numelion.local et server.numelion.local. Pour cela, je vais faire simple et créer deux dossier dans le serveur web qui va accueillir les sites internet en question.

Voici le schéma que l’on va mettre en place sur le serveur web pour créer nos virtualhosts :

Créer virtualhosts sur serveur web Apache

Les deux commandes vont créer deux nouveaux répertoires dans /var/www/ pour stocker les fichiers des sites.

sudo mkdir /var/www/numelion.local
sudo mkdir /var/www/server.numelion.local

Les deux commandes suivantes vont ouvrir un éditeur de texte (nano en l’occurrence) pour créer (ou modifier) le fichier index.html que je vais placer à la racine de chaque site. Dans mon cas, je vais les personnaliser pour qu’on puisse différencier chaque site internet.

sudo nano /var/www/numelion.local/index.html
sudo nano /var/www/server.numelion.local/index.html

Créer les fichiers de configurations virtualhosts des sites

Cette commande ouvre un éditeur de texte nano pour créer / modifier le fichier de configuration numelion.local.conf dans le répertoire sites-available d’Apache.

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

Fichier de configuration du site 1 : numelion.local.conf

Maintenant, nous allons renseigner le fichier de configuration de notre premier virtualhost, je vous explique juste après les différentes lignes du fichier.

<VirtualHost *:80>
ServerAdmin admin@numelion.local
ServerName numelion.local
ServerAlias numelion.local

DocumentRoot /var/www/numelion.local

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

Pour ceux qui se demande à quoi correspond chaque élément dans le fichier de configuration :

1 – Pour la partie <virtualHost *:80> :

En utilisant le signe « * », on configure le VirtualHost pour écouter toutes les adresses IP disponibles, ce qui est pratique sur des serveurs avec plusieurs interfaces réseau ou adresses IP. Il est plus simple que de spécifier chaque adresse IP individuellement, surtout dans des environnements dynamiques ou multi-hébergés, mais vous l’avez compris on aurait pu

Le chiffre 80 permet à un site web de répondre aux requêtes HTTP sur le port 80, qui est le port par défaut pour les requêtes web (le port 443 est celui pour https).

2 – Pour la partie suivante :

  • ServerAdmin : l’adresse email de l’administrateur du site.
  • ServerName : le nom de domaine du site.
  • DocumentRoot : le chemin du répertoire racine du site web dans l’arborescence du serveur web.
  • ErrorLog et CustomLog : les chemins vers les fichiers de log d’Apache.

Fichier de configuration du site 2 : server.numelion.local.conf

Cette commande copie le fichier de configuration numelion.local.conf dans le répertoire sites-available d’Apache pour créer le fichier server.numelion.local que nous allons adapter par la suite.

sudo cp numelion.local.conf server.numelion.local.conf

Ensuite, on va adapter le contenu pour le deuxième virtualhost, donc server.numelion.conf qui se trouve dans un dossier différent et qui a une URL différente. Je conserve le même chemin pour les logs, mais j’aurais pu créer un chemin spécifique.

<VirtualHost *:80>
    ServerAdmin admin@numelion.local
    ServerName server.numelion.local
    ServerAlias server.numelion.local
 
    DocumentRoot /var/www/server.numelion.local

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

Activer /désactiver les virtualhosts

Les commandes ci-dessous avec a2ensite active les sites numelion.local et server.numelion.local en créant un lien symbolique dans le répertoire sites-enabled d’Apache.

Par contre la commande a2dissite désactive le site par défaut fourni avec l’installation d’Apache. Enfin, la dernière commande redémarre le serveur apache2 pour appliquer la configuration.

sudo a2ensite numelion.local.conf
sudo a2ensite server.numelion.local.conf
sudo a2dissite 000-default.conf

sudo systemctl restart apache2

Paramétrer la résolution du nom de domaine

Nos virtualhosts sont en place sur le serveur web, mais on ne peut pas encore accéder aux URL numelion.local et server.numelion.local. En effet, nos ordinateurs ne savent pas comment y accéder, ils ont besoin de résoudre le nom de domaine.

En effet, pour notre ordinateur, lorsqu’il souhaite accéder à numelion.local, il a besoin de connaître son adresse IP, pour cela deux solutions, soit avoir un serveur DNS configuré avec l’adresse IP de notre serveur pour les noms de domaine ou configurer la résolution en local sur la machine depuis laquelle on souhaite accéder au serveur.

La solution 2 est la plus simple et rapide à mettre en place pour l’exemple, donc, c’est celle que je vais utiliser.

Si test dans Linux, le fichier se trouve ici : sudo nano /etc/hosts
Si test dans Windows, lancer le bloc note en admin : C:\Windows\System32\drivers\etc\hosts

Paramétrer le fichier Hosts

Ajouter dans les fichiers la résolution du nom de domaine, donc l’adresse IP (celle du serveur web) pour accéder au site internet configuré avec le virtualhost. Une fois que c’est fais, vous pouvez normalement accéder au site internet.

Accéder au site internet virtualhost