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.
apache2. Il utilise systemd pour le démarrage et la structure sites-available / sites-enabled pour la gestion des hôtes virtuels.
/etc/apache2/, /var/www/, logs).a2ensite, a2dissite, a2enmod, apache2ctl.ufw.Apache2 sous Debian 13 suit une organisation claire qui sépare la configuration, les sites web et les logs.
| Chemin | Rôle | Contenu 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/apache2ctl | Utilitaire de contrôle avancé d'Apache. | Test de config, start, stop, graceful. |
sudo apt update sudo apt install apache2 -y
Le service démarre automatiquement et est activé au boot.
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).sudo ufw allow 'Apache Full' sudo ufw status
Ouverture des ports 80 (HTTP) et 443 (HTTPS) via le profil UFW prédéfini.
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).
| Commande | Description |
|---|---|
sudo systemctl start apache2 | Démarre le service Apache. |
sudo systemctl stop apache2 | Arrête le service Apache. |
sudo systemctl restart apache2 | Redémarre le service (coupure brutale). |
sudo systemctl reload apache2 | Recharge la configuration sans couper les connexions. |
sudo apache2ctl configtest | Vérifie la syntaxe des fichiers de configuration. |
sudo a2ensite mon-site.conf | Active un VirtualHost (crée un lien dans sites-enabled). |
sudo a2dissite mon-site.conf | Désactive un VirtualHost. |
sudo a2enmod rewrite | Active un module (ex: rewrite). |
sudo a2dismod rewrite | Désactive un module. |
sudo apache2ctl -S | Affiche la configuration complète des VirtualHosts chargés. |
sudo apache2ctl configtest avant de recharger Apache. Cela évite de bloquer le serveur avec une syntaxe erronée.
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.
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.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>
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.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.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
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>.
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
echo "<h1>Intranet SIO</h1><p>Bienvenue sur le réseau interne.</p>" > /var/www/intranet/public_html/index.html
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.
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.
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.
Créez un VirtualHost pour le domaine blog.sio.local avec :
/var/www/blog/public_htmlindex.html personnalisé# 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
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.