Retour sur : Guides sur la technologie

Comment configurer un sous-domaine sur un même serveur Apache que le domaine principal sur Debian

Pour configurer un sous-domaine sur le même serveur Apache que le domaine principal sous Debian, faites pointer un enregistrement DNS A du sous-domaine vers le serveur, créez-lui un dossier, ajoutez un hôte virtuel Apache dont le ServerName est le sous-domaine, activez-le avec a2ensite et rechargez Apache. Sécurisez-le ensuite avec un certificat SSL de certbot.

Les étapes ci-dessous utilisent Apache 2.4 tel que fourni dans Debian 13 (trixie), la version stable actuelle, en date de novembre 2026. Ubuntu 24.04 LTS et 26.04 LTS utilisent la même structure et les mêmes commandes. Notre exemple ajoute staging.example.ca à un serveur qui sert déjà example.ca depuis /var/www/html.

Étape 1 : ajouter un enregistrement DNS pour le sous-domaine

Créez un enregistrement A pour le sous-domaine chez votre fournisseur DNS, qui pointe vers la même adresse IP que le domaine principal. Apache peut servir les deux depuis une seule adresse IP, parce qu’il choisit le site selon le nom demandé par le navigateur.

Nom d’hôte

Pointe vers (enregistrement A)

@ (example.ca)

203.0.113.10

staging

203.0.113.10

Remplacez 203.0.113.10 par l’adresse IP publique de votre serveur, et ajoutez un enregistrement AAAA correspondant si le serveur a une adresse IPv6. Le TTL par défaut convient. Vérifiez que l’enregistrement répond avant d’aller plus loin :

dig +short staging.example.ca

Étape 2 : créer un dossier pour les fichiers du sous-domaine

Donnez au sous-domaine sa propre racine de documents à côté de celle du site principal, et ajoutez une page de test pour distinguer les deux sites :

sudo mkdir -p /var/www/staging echo 'staging.example.ca works' | sudo tee /var/www/staging/index.html

Sous Debian et Ubuntu, la configuration principale d’Apache autorise déjà l’accès à tout ce qui se trouve sous /var/www/ ; un dossier à cet endroit n’a donc besoin d’aucun bloc de permission. Si vous placez les fichiers ailleurs, comme /srv/staging, ajoutez un bloc <Directory> avec Require all granted pour ce chemin.

Étape 3 : créer un hôte virtuel Apache pour le sous-domaine

Un hôte virtuel indique à Apache quel dossier servir pour quel nom. Créez un fichier de configuration pour le sous-domaine dans sites-available. Le nom du fichier doit se terminer par .conf, sinon l’Apache de Debian l’ignore :

sudo nano /etc/apache2/sites-available/staging.example.ca.conf

Ajoutez cette configuration :

<VirtualHost *:80> ServerName staging.example.ca ServerAdmin webmaster@example.ca DocumentRoot /var/www/staging ErrorLog ${APACHE_LOG_DIR}/staging-error.log CustomLog ${APACHE_LOG_DIR}/staging-access.log combined </VirtualHost>

ServerName est le nom auquel cet hôte virtuel répond, et DocumentRoot le dossier qu’il sert, comme le décrit la documentation d’Apache sur les hôtes virtuels à base de nom. ${APACHE_LOG_DIR} correspond à /var/log/apache2 sous Debian et Ubuntu. En y écrivant les journaux du sous-domaine sous leurs propres noms de fichier, vous n’avez pas à créer de dossier de journaux d’abord.

La première version de ce guide écrivait les journaux dans /var/log/apache2/staging/, un dossier qui n’existe pas par défaut. Apache refuse de démarrer quand un dossier de journaux manque, une erreur facile à manquer.

Étape 4 : activer le site avec a2ensite et recharger Apache

Activez le nouveau site, vérifiez la configuration, puis rechargez Apache :

sudo a2ensite staging.example.ca.conf sudo apache2ctl configtest sudo systemctl reload apache2

`a2ensite` (page en anglais) crée pour vous le lien symbolique de sites-available vers sites-enabled ; il prend le nom du fichier, pas le chemin complet. apache2ctl configtest doit afficher Syntax OK. S’il signale une erreur, corrigez-la avant de recharger, pour qu’une faute de frappe ne mette jamais le site principal hors ligne.

Ouvrez maintenant http://staging.example.ca. Vous devriez voir la page de test de l’étape 2. Pour voir comment Apache associe chaque nom, listez les hôtes virtuels chargés :

sudo apache2ctl -S

La documentation d’Apache sur les hôtes virtuels recommande cette option -S pour le débogage ; chaque nom doit apparaître avec le fichier de configuration qui le sert.

Étape 5 : ajouter le sous-domaine à votre certificat SSL

Une fois que le sous-domaine s’affiche en HTTP, sécurisez-le avec un certificat Let’s Encrypt gratuit. Vous pouvez lui donner son propre certificat ou l’ajouter au certificat du domaine principal.

Si certbot n’est pas encore installé, suivez notre guide pour installer un certificat SSL avec certbot sur Ubuntu et Apache ; les instructions Apache de certbot (en anglais) sont les mêmes sous Debian une fois snapd installé. Choisissez ensuite l’une de ces commandes :

# Certificat distinct pour le sous-domaine sudo certbot --apache -d staging.example.ca # Ou l’ajouter au certificat principal (listez tous les domaines) sudo certbot --apache --cert-name example.ca -d example.ca,www.example.ca,staging.example.ca

La deuxième commande doit lister tous les domaines déjà présents sur le certificat. La première version de ce guide utilisait -d example.ca,staging.example.ca --expand, ce qui laisse www.example.ca hors du nouveau certificat si l’ancien le couvrait. Notre guide pour ajouter un sous-domaine à un certificat existant avec certbot explique quand choisir chaque option.

Pourquoi mon sous-domaine affiche-t-il le site principal ?

Apache affiche le site principal quand aucun hôte virtuel ne correspond au nom du sous-domaine. Dans ce cas, Apache utilise le premier hôte virtuel chargé, qui est 000-default.conf sous Debian. Vérifiez dans l’ordre :

  1. La ligne ServerName correspond exactement au sous-domaine, sans faute de frappe.

  2. Le site est activé : ls /etc/apache2/sites-enabled/ affiche staging.example.ca.conf.

  3. Apache a été rechargé après la modification.

  4. Pour le HTTPS, le sous-domaine a son propre hôte virtuel sur le port 443. Certbot en crée un quand vous ajoutez le sous-domaine avec --apache.

Quand nous dépannons ce problème chez msmtech, nous commençons par sudo apache2ctl -S : la commande montre si le sous-domaine figure dans la liste, et quel fichier le sert.

Questions fréquentes

Faut-il une adresse IP distincte pour un sous-domaine ?

Non. Avec les hôtes virtuels à base de nom, plusieurs sites partagent une seule adresse IP, et Apache choisit le site selon le nom d’hôte envoyé par le navigateur. Il suffit d’un enregistrement DNS qui pointe le sous-domaine vers le serveur.

Combien de temps faut-il pour qu’un nouveau sous-domaine fonctionne ?

Cela dépend de votre fournisseur DNS et du TTL de l’enregistrement. Au lieu d’attendre un délai fixe, lancez dig +short staging.example.ca jusqu’à ce que la commande affiche l’adresse IP du serveur, puis demandez le certificat.

Ces étapes fonctionnent-elles sur Ubuntu ?

Oui. Ubuntu fournit Apache de la même façon que Debian, avec sites-available, sites-enabled, a2ensite et ${APACHE_LOG_DIR}. Les commandes sont identiques sur Ubuntu 24.04 LTS et 26.04 LTS.

Comment désactiver un sous-domaine plus tard ?

Lancez sudo a2dissite staging.example.ca.conf, puis sudo systemctl reload apache2. Le fichier de configuration reste dans sites-available ; vous pourrez le réactiver avec a2ensite.

Peut-on faire tourner WordPress sur le sous-domaine ?

Oui. Faites pointer l’hôte virtuel vers le dossier de WordPress et donnez au site sa propre base de données, comme dans notre guide pour installer WordPress sur un VPS Ubuntu. Un VPS vous donne l’accès root dont ces étapes ont besoin.

Besoin d’aide avec votre serveur Apache ? Parlez à msmtech.

Aucune solution sur étagère? On la construit.