← Retour au portail

🐧 Module L19 – Apache sur Debian 13

📘 Fiche de cours ⏱ 2h30 🎯 Bloc 2 – Administration Linux
Objectifs : installer et configurer Apache2, maßtriser l'arborescence, gérer les modules et créer un VirtualHost fonctionnel sur Debian 13.

📖 Introduction

Apache HTTP Server (apache2 sous Debian) est le serveur Web le plus utilisé au monde. Dans le cadre du BTS SIO SISR, sa maßtrise est essentielle pour la mise à disposition de services web en interne ou en externe. Ce module couvre son installation sur Debian 13, sa structure de fichiers, les commandes de gestion et la création d'un VirtualHost.

📌 Debian 13 (Trixie) : Le paquet s'appelle apache2. Il utilise systemd pour le dĂ©marrage et la structure sites-available / sites-enabled pour la gestion des hĂŽtes virtuels.
🎯

À l'issue de ce module, vous serez capable de :

  • Installer et dĂ©marrer le service Apache2 sur Debian 13.
  • ConnaĂźtre l'arborescence essentielle (/etc/apache2/, /var/www/, logs).
  • Utiliser les commandes a2ensite, a2dissite, a2enmod, apache2ctl.
  • CrĂ©er, activer et tester un VirtualHost nommĂ©.
  • GĂ©rer les permissions et le pare-feu ufw.

🔍 Architecture et arborescence

Apache2 sous Debian 13 suit une organisation claire qui sépare la configuration, les sites web et les logs.

CheminRĂŽleContenu typique
/etc/apache2/Répertoire de configuration principal.apache2.conf, ports.conf, dossiers sites-available, mods-available...
/etc/apache2/sites-available/Fichiers de configuration des VirtualHosts (inactifs par défaut).000-default.conf, mon-site.conf
/etc/apache2/sites-enabled/Liens symboliques vers sites-available (sites actifs).Lien vers 000-default.conf
/etc/apache2/mods-available/Modules disponibles (fichiers .load et .conf).ssl.load, rewrite.load
/etc/apache2/mods-enabled/Modules actuellement chargés.Liens symboliques des modules activés.
/var/www/Racine des documents web (DocumentRoot).html/, dossiers de vos sites.
/var/log/apache2/Fichiers de logs (accĂšs et erreurs).access.log, error.log
/usr/sbin/apache2ctlUtilitaire de contrÎle avancé d'Apache.Test de config, start, stop, graceful.

đŸ› ïž Installation d'Apache2

1. Mise Ă  jour et installation

sudo apt update
sudo apt install apache2 -y

Le service démarre automatiquement et est activé au boot.

2. Vérification du service

sudo systemctl status apache2
sudo systemctl enable apache2
  • systemctl status apache2 : vĂ©rifie que le service est active (running).
  • systemctl enable apache2 : s'assure que le service dĂ©marre au boot (souvent dĂ©jĂ  fait par l'installation).

3. Pare-feu – Autoriser HTTP/HTTPS

sudo ufw allow 'Apache Full'
sudo ufw status

Ouverture des ports 80 (HTTP) et 443 (HTTPS) via le profil UFW prédéfini.

4. Test initial

Ouvrez un navigateur et accédez à l'IP du serveur :

http://192.168.1.10

Vous devez voir la page par défaut « It works! » (fichier /var/www/html/index.html).

📋 Commandes essentielles

CommandeDescription
sudo systemctl start apache2Démarre le service Apache.
sudo systemctl stop apache2ArrĂȘte le service Apache.
sudo systemctl restart apache2Redémarre le service (coupure brutale).
sudo systemctl reload apache2Recharge la configuration sans couper les connexions.
sudo apache2ctl configtestVérifie la syntaxe des fichiers de configuration.
sudo a2ensite mon-site.confActive un VirtualHost (crée un lien dans sites-enabled).
sudo a2dissite mon-site.confDésactive un VirtualHost.
sudo a2enmod rewriteActive un module (ex: rewrite).
sudo a2dismod rewriteDésactive un module.
sudo apache2ctl -SAffiche la configuration complÚte des VirtualHosts chargés.
💡 Bonne pratique : AprĂšs chaque modification de configuration, exĂ©cutez toujours sudo apache2ctl configtest avant de recharger Apache. Cela Ă©vite de bloquer le serveur avec une syntaxe erronĂ©e.

🌐 CrĂ©ation d'un VirtualHost

Un VirtualHost permet d'hĂ©berger plusieurs sites web sur une mĂȘme machine physique en se basant sur le nom de domaine (ServerName) ou l'adresse IP.

Étape 1 – CrĂ©er l'arborescence du site

sudo mkdir -p /var/www/mon-site/public_html
sudo chown -R $USER:$USER /var/www/mon-site/public_html
sudo chmod -R 755 /var/www/mon-site
  • mkdir -p : crĂ©e les dossiers parents si nĂ©cessaire.
  • chown $USER:$USER : donne la propriĂ©tĂ© Ă  l'utilisateur courant pour l'Ă©dition.
  • chmod 755 : le propriĂ©taire a tous les droits, le groupe et les autres peuvent lire/exĂ©cuter.

Étape 2 – CrĂ©er une page d'accueil

nano /var/www/mon-site/public_html/index.html

Contenu exemple :

<html>
  <body>
    <h1>Bienvenue sur mon-site.local</h1>
    <p>VirtualHost configuré avec succÚs !</p>
  </body>
</html>

Étape 3 – CrĂ©er le fichier de configuration

sudo nano /etc/apache2/sites-available/mon-site.conf

Contenu du fichier :

<VirtualHost *:80>
    ServerAdmin webmaster@mon-site.local
    ServerName mon-site.local
    ServerAlias www.mon-site.local
    DocumentRoot /var/www/mon-site/public_html

    <Directory /var/www/mon-site/public_html>
        Options -Indexes +FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/mon-site-error.log
    CustomLog ${APACHE_LOG_DIR}/mon-site-access.log combined
</VirtualHost>
  • <VirtualHost *:80> : Ă©coute sur toutes les IPs, port 80.
  • ServerName : nom de domaine principal du site.
  • ServerAlias : alias acceptĂ©s (sous-domaines, www...).
  • DocumentRoot : chemin vers les fichiers du site.
  • <Directory> : rĂšgles de sĂ©curitĂ© appliquĂ©es au dossier.
  • AllowOverride All : autorise les fichiers .htaccess.
  • Require all granted : autorise l'accĂšs Ă  tout le monde.
  • ErrorLog / CustomLog : fichiers de log dĂ©diĂ©s au site.

Étape 4 – Activer le site et recharger Apache

sudo a2ensite mon-site.conf
sudo a2dissite 000-default.conf
sudo apache2ctl configtest
sudo systemctl reload apache2
  • a2ensite : crĂ©e un lien symbolique de sites-available vers sites-enabled.
  • a2dissite 000-default.conf : dĂ©sactive le site par dĂ©faut pour Ă©viter les conflits.
  • apache2ctl configtest : vĂ©rifie la syntaxe avant rechargement.
  • reload : applique les changements sans interruption de service.

Étape 5 – RĂ©solution DNS locale (test)

Sur la machine cliente (ou le serveur lui-mĂȘme pour un test local), Ă©ditez :

sudo nano /etc/hosts

Ajoutez la ligne :

192.168.1.10    mon-site.local    www.mon-site.local

Puis testez avec :

curl http://mon-site.local
# ou dans le navigateur : http://mon-site.local
⚠

Attention aux permissions

Apache s'exécute sous l'utilisateur www-data. Si vous rencontrez des erreurs 403 Forbidden, vérifiez que www-data a le droit de lecture sur DocumentRoot et que l'option Require all granted est bien présente dans le bloc <Directory>.

đŸ§Ș Mise en pratique guidĂ©e

Scénario : Mettre en ligne un site interne « intranet.sio.local »

1. Préparation

sudo mkdir -p /var/www/intranet/public_html
sudo chown -R $USER:$USER /var/www/intranet/public_html
sudo chmod -R 755 /var/www/intranet

2. Page HTML

echo "<h1>Intranet SIO</h1><p>Bienvenue sur le réseau interne.</p>"   > /var/www/intranet/public_html/index.html

3. Configuration du VirtualHost

sudo nano /etc/apache2/sites-available/intranet.conf

Collez la configuration adaptée (voir modÚle ci-dessus) avec ServerName intranet.sio.local et DocumentRoot /var/www/intranet/public_html.

4. Activation et test

sudo a2ensite intranet.conf
sudo a2dissite 000-default.conf
sudo apache2ctl configtest
sudo systemctl reload apache2

Vérifiez avec curl http://intranet.sio.local aprÚs avoir ajouté l'entrée dans /etc/hosts.

📝 Exercices d'application

Exercice 1 – QCM rapide

Quelle commande permet de vérifier la syntaxe de la configuration Apache avant rechargement ?

sudo apache2ctl configtest (ou apache2ctl -t). Elle analyse tous les fichiers de configuration et retourne Syntax OK si tout est correct, ou le détail de l'erreur sinon.

Exercice 2 – CrĂ©ation complĂšte

Créez un VirtualHost pour le domaine blog.sio.local avec :

  • DocumentRoot : /var/www/blog/public_html
  • Un fichier index.html personnalisĂ©
  • Des logs dĂ©diĂ©s
  • Le site activĂ© et le site par dĂ©faut dĂ©sactivĂ©
# 1. Arborescence
sudo mkdir -p /var/www/blog/public_html
sudo chown -R $USER:$USER /var/www/blog/public_html
sudo chmod -R 755 /var/www/blog

# 2. Page d'accueil
echo "<h1>Mon Blog SIO</h1>" > /var/www/blog/public_html/index.html

# 3. Fichier de configuration
sudo nano /etc/apache2/sites-available/blog.conf

Contenu de blog.conf :

<VirtualHost *:80>
    ServerAdmin admin@sio.local
    ServerName blog.sio.local
    DocumentRoot /var/www/blog/public_html

    <Directory /var/www/blog/public_html>
        Options -Indexes +FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/blog-error.log
    CustomLog ${APACHE_LOG_DIR}/blog-access.log combined
</VirtualHost>
# 4. Activation
sudo a2ensite blog.conf
sudo a2dissite 000-default.conf
sudo apache2ctl configtest
sudo systemctl reload apache2

🎯 Quiz d'auto‑évaluation

1. Le paquet Ă  installer pour Apache sous Debian 13 s'appelle httpd.

2. La commande sudo a2ensite mon-site.conf active un VirtualHost.

3. Le répertoire /var/www/html est le DocumentRoot par défaut d'Apache2 sous Debian.

4. sudo systemctl reload apache2 coupe brutalement toutes les connexions actives.

5. La directive Require all granted dans un bloc Directory autorise l'accĂšs Ă  tout le monde.

📚 Ressources