Tout comme un serveur mutualisé, il est possible de gérer plusieurs sites, et donc plusieurs domaines ou sous domaines sur un serveur dédié ou VPS. Si vous n’utilisez pas d’interface graphique, il est possible de créer des hôtes virtuels qui vous permettront de gérer les différents domaines et de leur assigner un dossier propre de votre serveur.
- Prérequis pour la création de virtual hosts sur un dédié ou VPS
- Création d’un nouveau sous-domaine chez l’hébergeur
- Création des virtual hosts sur le serveur
- 1. Déclarer les hôtes locaux dans le fichier /etc/hosts (optionnel)
- 2. Créer les répertoires racines pour vos projets
- 3. Créer les fichiers de configuration Apache pour chaque virtual host
- 4. Modifier les fichiers de configuration pour chaque domaine
- 5. Activer les nouveaux virtual hosts
- 6. (Optionnel) Configurer les permissions et droits d’accès
- Modification des fichiers .conf pour la configuration des virtual hosts
Prérequis pour la création de virtual hosts sur un dédié ou VPS
La mise en place de virtual hosts (ou hôtes virtuels) est essentielle pour héberger plusieurs sites web sur un seul serveur, qu’il s’agisse d’un VPS ou d’un serveur dédié. Cette configuration permet d’isoler proprement chaque projet, tout en mutualisant les ressources et en assurant une gestion centralisée. C’est une étape incontournable pour les développeurs web, freelances, agences, ou toute entreprise qui gère plusieurs domaines.
Avant de commencer, voici les éléments nécessaires :
Élément requis | Description |
---|---|
Accès SSH complet | Vous devez pouvoir vous connecter en SSH avec un utilisateur ayant les droits sudo (ou l’accès root) afin de modifier la configuration du serveur, notamment les fichiers Apache ou Nginx. |
Gestion DNS du domaine | Assurez-vous de pouvoir ajouter ou modifier les enregistrements DNS (type A ou CNAME) via le panneau d’administration de votre registrar (OVH, Gandi, Infomaniak, etc.). |
Serveur web installé | Votre machine doit être équipée d’un serveur web fonctionnel comme Apache2 ou Nginx . Les virtual hosts s’intègrent dans leur configuration respective. |
Système à jour | Avant toute installation ou modification, veillez à mettre votre serveur à jour avec les commandes suivantes :
|
Certificat SSL (optionnel mais recommandé) | Vous pouvez installer un certificat SSL gratuit avec Let’s Encrypt pour sécuriser vos domaines avec HTTPS. |
Une fois ces prérequis validés, vous pourrez configurer vos hôtes virtuels sereinement, que ce soit pour créer des sous-domaines comme dev.monsite.com
, test.monsite.com
, ou héberger des projets clients sur le même serveur.
Création d’un nouveau sous-domaine chez l’hébergeur
La création d’un sous-domaine sur un serveur dédié ou VPS commence toujours par une étape cruciale : la configuration DNS depuis l’interface de gestion de votre registrar ou hébergeur (OVH, Gandi, Infomaniak, Ionos, etc.). Cette étape permet de faire le lien entre votre nom de domaine et votre serveur, qu’il s’agisse d’un environnement de production, de test ou de développement. Sans cela, votre virtual host ne pourra pas être accessible depuis le Web.
Vous devez ajouter une ou plusieurs entrées DNS pour déclarer le sous-domaine. Deux types d’entrées sont possibles :
- Entrée de type A : elle fait pointer le sous-domaine directement vers l’adresse IP de votre serveur. C’est la méthode la plus directe.
- Entrée de type CNAME : elle redirige le sous-domaine vers un autre nom de domaine déjà configuré, comme le domaine principal de votre site.
Dans les deux cas, il est recommandé de créer une version avec et sans www pour assurer une meilleure compatibilité. Voici les syntaxes à utiliser, en version textuelle :
Exemple avec une entrée A :
test IN A 213.186.33.3
www.test IN A 213.186.33.3
Dans ce cas, le sous-domaine test.votresite.com
pointera directement vers l’IP publique de votre serveur. C’est idéal pour les VPS et dédiés auto-hébergés.
Exemple avec une entrée CNAME :
test IN CNAME facemweb.com.
www.test IN CNAME www.facemweb.com.
⚠️ Attention : n’oubliez pas le .
à la fin du nom de domaine cible dans les entrées CNAME, c’est obligatoire dans certaines interfaces DNS, notamment lorsque vous travaillez en configuration avancée ou via des fichiers de zone manuels.
Vous pouvez également vérifier que vos enregistrements DNS sont bien propagés via un outil comme What’s My DNS. En cas de propagation lente, comptez jusqu’à 24h selon les TTL (Time To Live) définis dans votre zone DNS.
Une fois cette étape validée, le sous-domaine pointera correctement vers votre serveur, ce qui vous permettra de passer à la configuration du VirtualHost Apache ou du bloc serveur Nginx.
Création des virtual hosts sur le serveur
Une fois vos sous-domaines correctement enregistrés et propagés via les DNS de votre hébergeur, il est temps de passer à la configuration des virtual hosts sur votre serveur. Cette étape permet d’associer chaque domaine ou sous-domaine à son propre répertoire de fichiers sur votre machine, facilitant la gestion multi-site et l’isolation logique des projets.
Dans cet exemple, nous allons configurer site.fr
et son sous-domaine blog.site.fr
sur un serveur Apache hébergé sur un VPS ou un serveur dédié Ubuntu/Debian.
1. Déclarer les hôtes locaux dans le fichier /etc/hosts (optionnel)
Cette étape est facultative pour les environnements de production, mais très utile en local pour tester sans propagation DNS. On modifie le fichier /etc/hosts
afin d’indiquer au système que ces noms de domaines pointent vers l’IP locale :
sudo nano /etc/hosts
Ajoutez les lignes suivantes :
127.0.0.1 site.fr
127.0.0.1 blog.site.fr
Cela permet au système de résoudre ces noms de domaine localement vers localhost
.
2. Créer les répertoires racines pour vos projets
Chaque virtual host pointera vers un dossier distinct afin de ne pas mélanger les fichiers et de permettre une meilleure maintenance :
sudo mkdir -p /var/www/site.fr
sudo mkdir -p /var/www/blog.site.fr
Vous pouvez ensuite y placer vos fichiers HTML/PHP ou cloner vos projets Git dans ces répertoires.
3. Créer les fichiers de configuration Apache pour chaque virtual host
Apache nécessite une déclaration de configuration distincte par domaine/sous-domaine. Ces fichiers sont stockés dans /etc/apache2/sites-available
.
Pour aller plus vite, copiez le fichier de base fourni avec Apache :
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/site.conf
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/blog.conf
4. Modifier les fichiers de configuration pour chaque domaine
Ouvrez ensuite chaque fichier pour le personnaliser :
sudo nano /etc/apache2/sites-available/site.conf
Et remplacez son contenu par quelque chose comme ceci :
<VirtualHost *:80>
ServerAdmin contact@site.fr
ServerName site.fr
ServerAlias www.site.fr
DocumentRoot /var/www/site.fr
ErrorLog ${APACHE_LOG_DIR}/site_error.log
CustomLog ${APACHE_LOG_DIR}/site_access.log combined
</VirtualHost>
Faites de même pour blog.conf
:
<VirtualHost *:80>
ServerAdmin contact@site.fr
ServerName blog.site.fr
ServerAlias www.blog.site.fr
DocumentRoot /var/www/blog.site.fr
ErrorLog ${APACHE_LOG_DIR}/blog_error.log
CustomLog ${APACHE_LOG_DIR}/blog_access.log combined
</VirtualHost>
5. Activer les nouveaux virtual hosts
Activez les fichiers de configuration via les commandes suivantes :
sudo a2ensite site.conf
sudo a2ensite blog.conf
Rechargez ensuite Apache pour appliquer les modifications :
sudo systemctl reload apache2
Vérifiez que la syntaxe de vos fichiers est correcte à l’aide de :
sudo apache2ctl configtest
6. (Optionnel) Configurer les permissions et droits d’accès
Pour éviter les erreurs 403 Forbidden ou d’accès bloqué, vérifiez que les dossiers /var/www/site.fr
et /var/www/blog.site.fr
appartiennent bien à l’utilisateur www-data
(l’utilisateur utilisé par Apache) :
sudo chown -R www-data:www-data /var/www/site.fr
sudo chown -R www-data:www-data /var/www/blog.site.fr
Et appliquez des droits raisonnables :
sudo chmod -R 755 /var/www
Vous avez désormais une architecture multi-site sur un même serveur parfaitement fonctionnelle et structurée. Chaque virtual host peut ensuite être équipé de son propre certificat SSL (via Let’s Encrypt par exemple), de ses logs, de ses règles de réécriture et de ses optimisations individuelles.
Envie d’aller plus loin ? Explorez la configuration SSL, le reverse proxy ou même les redirections conditionnelles dans Apache. Pour plus d’astuces, jetez un œil à notre section dédiée à la création de site Internet.
Modification des fichiers .conf pour la configuration des virtual hosts
Une fois vos répertoires créés et vos fichiers de configuration clonés, il est temps de les personnaliser pour faire fonctionner vos domaines site.fr
et blog.site.fr
de manière totalement indépendante. Apache utilise ces fichiers pour router les requêtes vers les bons dossiers du serveur.
1. Configuration de site.conf
Éditez le fichier site.conf
:
sudo nano /etc/apache2/sites-available/site.conf
Et remplacez son contenu par :
<VirtualHost *:80>
ServerAdmin votre-mail@site.fr
ServerName site.fr
ServerAlias www.site.fr
DocumentRoot /var/www/site
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/site>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/site_error.log
CustomLog ${APACHE_LOG_DIR}/site_access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Require ip 127.0.0.1
</Directory>
</VirtualHost>
2. Configuration de blog.conf
De même, éditez le fichier blog.conf
:
sudo nano /etc/apache2/sites-available/blog.conf
Et adaptez-le comme suit :
<VirtualHost *:80>
ServerAdmin votre-mail@site.fr
ServerName blog.site.fr
ServerAlias www.blog.site.fr
DocumentRoot /var/www/blog
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/blog>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/blog_error.log
CustomLog ${APACHE_LOG_DIR}/blog_access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Require ip 127.0.0.1
</Directory>
</VirtualHost>
3. Activer les virtual hosts et recharger Apache
Pour que Apache tienne compte de vos nouveaux fichiers, activez-les à l’aide de :
sudo a2ensite site.conf
sudo a2ensite blog.conf
Rechargez Apache afin d’appliquer les modifications :
sudo systemctl reload apache2
4. Tester le bon fonctionnement
Avant de déployer un CMS ou autre contenu, vous pouvez vérifier que le routage fonctionne avec un simple fichier de test. Créez un fichier index.php
dans chaque dossier racine :
sudo nano /var/www/site/index.php
Collez ce code :
<?php
echo "hello world!";
?>
Faites de même pour /var/www/blog/index.php
. Une fois cela fait, rendez-vous sur http://site.fr et http://blog.site.fr. Si les deux affichent “hello world!”, c’est que vos virtual hosts sont opérationnels.
5. Astuce bonus : automatiser avec certbot pour HTTPS
Pensez à passer ces virtual hosts en HTTPS. Si vous avez installé Let’s Encrypt, vous pouvez exécuter :
sudo certbot --apache
Certbot détectera automatiquement vos virtual hosts activés et proposera de les sécuriser.
Simple, rapide et très efficace. C’est tout ce que je peux dire de votre tutoriel.