Linux

Apache — Serveur web Linux

Installer Apache2, configurer des virtual hosts, activer SSL avec Let's Encrypt et sécuriser le serveur.

← Retour aux tutoriels Linux
📚 C'est quoi Apache ? Apache HTTP Server (apache2) est le serveur web le plus utilisé au monde. Il permet d'héberger des sites web et applications, avec un système modulaire très flexible. Il supporte les virtual hosts pour héberger plusieurs sites sur un même serveur, et s'intègre facilement avec PHP, Python et d'autres langages.
ⓘ Prérequis Un serveur Debian/Ubuntu avec accès root — Un nom de domaine pointant vers le serveur (pour SSL) — Ports 80 et 443 ouverts dans le pare-feu.

Installer Apache2

# Mettre à jour les paquets
sudo apt update && sudo apt upgrade -y

# Installer Apache2
sudo apt install apache2 -y

# Vérifier le statut
sudo systemctl status apache2

# Activer au démarrage
sudo systemctl enable apache2

Testez en ouvrant http://IP_DU_SERVEUR dans un navigateur — vous devriez voir la page par défaut d'Apache.

Créer un Virtual Host

Un virtual host permet d'héberger un site dédié avec son propre nom de domaine :

Créer le répertoire du site

sudo mkdir -p /var/www/monsite.fr
sudo chown -R www-data:www-data /var/www/monsite.fr
sudo chmod -R 755 /var/www/monsite.fr

Créer une page de test

echo "<h1>Bienvenue sur monsite.fr</h1>" | sudo tee /var/www/monsite.fr/index.html

Créer le fichier de configuration

sudo nano /etc/apache2/sites-available/monsite.fr.conf

Contenu du fichier :

<VirtualHost *:80>
    ServerName monsite.fr
    ServerAlias www.monsite.fr
    DocumentRoot /var/www/monsite.fr
    ErrorLog ${APACHE_LOG_DIR}/monsite-error.log
    CustomLog ${APACHE_LOG_DIR}/monsite-access.log combined
</VirtualHost>

Activer le site

# Activer le virtual host
sudo a2ensite monsite.fr.conf

# Désactiver le site par défaut (optionnel)
sudo a2dissite 000-default.conf

# Vérifier la syntaxe
sudo apache2ctl configtest

# Recharger Apache
sudo systemctl reload apache2

Activer SSL avec Let's Encrypt

Installer Certbot

sudo apt install certbot python3-certbot-apache -y

Obtenir un certificat SSL

# Certbot configure automatiquement Apache
sudo certbot --apache -d monsite.fr -d www.monsite.fr

Certbot va :

  • Générer le certificat SSL
  • Modifier la config Apache pour HTTPS
  • Ajouter la redirection HTTP → HTTPS

Renouvellement automatique

# Tester le renouvellement
sudo certbot renew --dry-run

# Le renouvellement automatique est déjà configuré via un timer systemd
sudo systemctl list-timers | grep certbot

Sécuriser Apache

Masquer la version d'Apache

# Éditer la configuration de sécurité
sudo nano /etc/apache2/conf-available/security.conf

Modifier ces directives :

ServerTokens Prod
ServerSignature Off

Activer les modules de sécurité

# Headers de sécurité
sudo a2enmod headers
sudo a2enmod rewrite

# Ajouter les headers dans le virtual host
# <VirtualHost> ...
#   Header always set X-Content-Type-Options "nosniff"
#   Header always set X-Frame-Options "SAMEORIGIN"
#   Header always set X-XSS-Protection "1; mode=block"
# </VirtualHost>

Désactiver le listing des répertoires

# Dans le virtual host, ajouter :
# <Directory /var/www/monsite.fr>
#     Options -Indexes +FollowSymLinks
#     AllowOverride All
# </Directory>

Commandes de gestion

# Démarrer / Arrêter / Redémarrer
sudo systemctl start apache2
sudo systemctl stop apache2
sudo systemctl restart apache2
sudo systemctl reload apache2

# Lister les sites actifs
ls /etc/apache2/sites-enabled/

# Lister les modules actifs
apache2ctl -M

# Vérifier la configuration
sudo apache2ctl configtest

# Voir les logs en direct
sudo tail -f /var/log/apache2/error.log
sudo tail -f /var/log/apache2/access.log
✔ Résultat Apache2 est installé avec un virtual host configuré, un certificat SSL Let's Encrypt actif et les bonnes pratiques de sécurisation appliquées. Votre site est accessible en HTTPS.