🌐

Apache2 — Installation & Hébergement Multisite

Linux Debian — VirtualHosts · 3 méthodes : IP, Ports, Noms DNS

📚 Matière
SISR
📅 Date
19 novembre 2024
☑️ Version
v1.0
🖥️ OS
Linux Debian
🔧 Outil
Apache2 VirtualHosts
👥 Public
Administrateurs système · Étudiants BTS SIO SISR

🎯
Objectif : Installer Apache2 sur un serveur Linux Debian et configurer un hébergement multisite (multi-hosts) selon 3 méthodes : deux adresses IP, plusieurs ports, noms de domaine DNS.
📋 Table des matières
§1Prérequis §2Configuration de l'adresse IP (Debian) §3Installation d'Apache2 Méthode 1Deux adresses IP Méthode 2Ports multiples (8080) Méthode 3Noms de domaine DNS (ServerName) RéférenceCommandes importantes
Architecture Apache2 — Hébergement multisite Serveur Linux Debian Apache2 Site 1 /var/www/site1 Site 2 /var/www/site2 Client http://site1 :80 / :8080 Client http://site2 :80 / :8080 3 méthodes : IP différentes · Ports différents · Noms DNS (ServerName)
01
📋 Prérequis
Techniques · Planification
02
🔌 Configuration de l'adresse IP (Debian)
Adresse IP fixe · Masque · Passerelle · DNS
📌
Avant d'installer Apache2, il faut configurer une adresse IP fixe sur le serveur Debian. Une IP dynamique peut changer au redémarrage et rendre le serveur injoignable.

Étape 1 — Modifier le fichier interfaces

Bash — root
# Ouvrir le fichier de configuration réseau
nano /etc/network/interfaces

Étape 2 — Configurer l'interface en IP fixe

/etc/network/interfaces
# Loopback (ne pas modifier)
auto lo
iface lo inet loopback

# Interface réseau principale
allow-hotplug enp0s3
iface enp0s3 inet static
    address   172.17.21.92
    netmask   255.255.0.0
    gateway   172.17.0.1
Bash — Relance le service
sudo systemctl restart networking
⚠️
Interface utilisée : enp0s3 · IP : 172.17.21.92 · Masque : 255.255.0.0 · Passerelle : 172.17.0.1. Adapter ces valeurs à votre environnement si nécessaire.

Étape 3 — Trouver le nom de l'interface réseau

Bash
# Afficher toutes les interfaces réseau
ip a

# Ou avec ifconfig (si installé)
ifconfig
💡
Dans cet exemple, l'interface s'appelle enp0s3. Le mot-clé allow-hotplug active l'interface automatiquement au démarrage. Vérifier avec ip a si le nom diffère sur votre machine.

Étape 4 — Redémarrer le service réseau

Bash
# Redémarrer le service réseau pour appliquer les changements
sudo systemctl restart networking

# Vérifier que l'IP est bien appliquée (doit afficher 172.17.21.92)
ip a

# Tester la connectivité vers la passerelle
ping 172.17.0.1
Si ping 172.17.0.1 répond, la configuration IP est correcte. L'interface enp0s3 doit afficher 172.17.21.92/16 dans la sortie de ip a.
ParamètreCommande / FichierDescription
Voir les interfacesip aListe toutes les interfaces et leurs IPs actuelles
Config IP fixe/etc/network/interfacesFichier de configuration réseau Debian
Redémarrer réseausystemctl restart networkingApplique les changements du fichier interfaces
Tester connexionping 8.8.8.8Vérifie l'accès Internet/passerelle
03
⚙️ Installation d'Apache2
Mise à jour · Installation · Vérification

Étape 1 — Mise à jour et installation

Bash — root
# Mettre à jour les paquets
apt update

# Installer Apache2 (confirmer avec "oui")
apt install apache2

Étape 2 — Vérification de l'installation

Bash
# Accéder au dossier racine d'Apache
cd /var/www/html

# Modifier la page d'accueil pour tester
nano index.html
⚠️
Attention : site1/index.html est vide pour l'instant. Il faut d'abord créer son contenu avant de le copier vers site2.
Bash — 1. D'abord créer le contenu de site1
nano /var/www/html/site1/index.html

Ensuite copier vers site2 — deux façons de faire :

Bash — Chemin absolu (recommandé)
cp /var/www/html/site1/index.html /var/www/html/site2/index.html
Bash — Aller d'abord dans le bon dossier
cd /var/www/html
cp site1/index.html site2/index.html
🌐
Ouvrir un navigateur et aller à : http://<adresse_IP_du_serveur>
La page d'accueil Apache2 avec la modification faite dans index.html doit s'afficher.
M1
🔵 Méthode 1 — Deux adresses IP
Une IP par site · VirtualHost par IP
⚠️
Cette méthode utilise une IP fixe par site. Les adresses IP dynamiques ne sont pas conservées au redémarrage — seule l'adresse IP fixe est gardée.
1
Créer les répertoires des sites
Bash — Créer les répertoires
mkdir -p /var/www/html/site1 /var/www/html/site2
⚠️
Attention : site1/index.html est vide pour l'instant. Tu dois d'abord créer son contenu avant de le copier vers site2.
Bash — D'abord créer le contenu de site1
nano /var/www/html/site1/index.html

Ensuite copier vers site2 — deux façons de faire :

Bash — Chemin absolu (recommandé)
cp /var/www/html/site1/index.html /var/www/html/site2/index.html
Bash — Aller d'abord dans le bon dossier
cd /var/www/html
cp site1/index.html site2/index.html
📄 Exemple de contenu index.html
HTML
<html>
  <head><title>Site 1</title></head>
  <body>
    <h1>Bienvenue sur Site 1</h1>
  </body>
</html>
2
Créer les fichiers de configuration VirtualHost
Bash
# Aller dans le dossier des sites disponibles
cd /etc/apache2/sites-available

# Créer un fichier de conf
touch site1.conf

# Vérifier la création
ls -l

# Configurer le fichier
nano site1.conf
📄 Exemple de configuration site1.conf
Apache2 VirtualHost — site1.conf
<VirtualHost 172.17.21.92:80>
    ServerAdmin webmaster@mortier.local
    DocumentRoot /var/www/html/site1
    ServerName site1.local
    ErrorLog ${APACHE_LOG_DIR}/site1-error.log
    CustomLog ${APACHE_LOG_DIR}/site1-access.log combined
</VirtualHost>
📄 Exemple de configuration site2.conf
Apache2 VirtualHost — site2.conf
<VirtualHost 172.17.21.192:80>
    ServerAdmin webmaster@mortier.local
    DocumentRoot /var/www/html/site2
    ServerName site2.local
    ErrorLog ${APACHE_LOG_DIR}/site2-error.log
    CustomLog ${APACHE_LOG_DIR}/site2-access.log combined
</VirtualHost>
3
Activer les configurations et redémarrer
Bash
# Activer les fichiers de conf
a2ensite site1.conf
a2ensite site2.conf

# Recharger Apache
systemctl reload apache2
Tester dans le navigateur : http://<IP_site1> et http://<IP_site2>
Si problème : désactiver/réactiver avec a2dissite puis a2ensite et recharger.
M2
🟠 Méthode 2 — Ports multiples
1 adresse IP · Port 80 pour site1 · Port 8080 pour site2
📌
Prérequis : Apache2 installé (§2) et répertoires site1/site2 créés (Méthode 1). Désactiver la Méthode 1 avant de commencer.
1
Désactiver la configuration précédente
Bash
a2dissite site1.conf site2.conf
systemctl reload apache2
2
Créer le fichier de conf ports
Bash
cd /etc/apache2/sites-available
cp site1.conf port_vhosts.conf
nano port_vhosts.conf
📄 Exemple de configuration port_vhosts.conf
Apache2 VirtualHost — Ports
# Site 1 sur port 80
<VirtualHost 192.168.1.10:80>
    DocumentRoot /var/www/html/site1
    ServerName site1.local
    ErrorLog ${APACHE_LOG_DIR}/site1-error.log
    CustomLog ${APACHE_LOG_DIR}/site1-access.log combined
</VirtualHost>

# Site 2 sur port 8080
<VirtualHost 192.168.1.10:8080>
    DocumentRoot /var/www/html/site2
    ServerName site2.local
    ErrorLog ${APACHE_LOG_DIR}/site2-error.log
    CustomLog ${APACHE_LOG_DIR}/site2-access.log combined
</VirtualHost>
3
Ajouter le port 8080 dans ports.conf
Bash
cd /etc/apache2
nano ports.conf

# Ajouter ces lignes :
Listen 80
Listen 8080
4
Activer et redémarrer
Bash
a2ensite port_vhosts.conf
systemctl reload apache2
Tester : http://<IP>:80 → Site 1 · http://<IP>:8080 → Site 2
M3
🟣 Méthode 3 — Noms de domaine DNS (ServerName)
1 IP · Port 80 · Différenciation par nom d'hôte
📌
Désactiver la Méthode 2 avant de commencer. Cette méthode utilise des noms DNS (ex : site1.local) à la place d'IPs ou ports différents.
1
Désactiver la configuration précédente
Bash
a2dissite port_vhosts.conf
systemctl reload apache2
2
Créer le fichier name_vhosts.conf
Bash
cd /etc/apache2/sites-available
cp port_vhosts.conf name_vhosts.conf
nano name_vhosts.conf
3
Configurer avec les ServerName DNS
Apache2 VirtualHost — DNS
# Toute IP, port 80 — différenciation par ServerName
<VirtualHost *:80>
    ServerName site1.local
    DocumentRoot /var/www/html/site1
    ErrorLog ${APACHE_LOG_DIR}/site1-error.log
    CustomLog ${APACHE_LOG_DIR}/site1-access.log combined
</VirtualHost>

<VirtualHost *:80>
    ServerName site2.local
    DocumentRoot /var/www/html/site2
    ErrorLog ${APACHE_LOG_DIR}/site2-error.log
    CustomLog ${APACHE_LOG_DIR}/site2-access.log combined
</VirtualHost>
4
Vérifier ports.conf — port 80 uniquement
Bash
nano /etc/apache2/ports.conf

# S'assurer que seule cette ligne est active :
Listen 80
5
Modifier le fichier hosts Windows (pour tester en local)
⚠️
Ouvrir Notepad en tant qu'administrateur (clic droit → Exécuter en tant qu'administrateur), puis ouvrir le fichier C:\Windows\System32\drivers\etc\hosts
Windows — hosts
# Chemin : C:\Windows\System32\drivers\etc\hosts
# Ajouter ces lignes (remplacer avec l'IP de votre serveur) :
192.168.x.x  site1.local
192.168.x.x  site2.local
6
Activer et redémarrer Apache
Bash
a2ensite name_vhosts.conf
systemctl reload apache2
Tester dans le navigateur : http://site1.local et http://site2.local
Chaque nom doit afficher le bon site grâce au ServerName.
📋
Référence — Commandes importantes
Apache2 · systemctl · nano
CommandeDescription
apt install apache2Installe Apache2 sur le serveur
a2ensite <fichier.conf>Active un VirtualHost Apache2
a2dissite <fichier.conf>Désactive un VirtualHost Apache2
systemctl reload apache2Recharge la configuration Apache2
systemctl restart apache2Redémarre complètement Apache2
systemctl status apache2Vérifie l'état du service Apache2
nano /etc/apache2/ports.confModifie les ports d'écoute Apache2
apache2ctl configtestVérifie la syntaxe des fichiers de conf

Comparatif des 3 méthodes

MéthodeDifférenciationIPsPortsDNS requis
M1 — IPAdresse IP2 IPs différentes80Non
M2 — PortsPort TCP1 IP80 + 8080Non
M3 — DNSServerName (nom)1 IP80Oui (hosts ou DNS)

BTS SIO SISR — Linux Debian — Apache2 Hébergement Multisite · v1.0 · 19/11/2024