Installer Apache2, configurer des virtual hosts, activer SSL avec Let's Encrypt et sécuriser le serveur.
# 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.
Un virtual host permet d'héberger un site dédié avec son propre nom de domaine :
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
echo "<h1>Bienvenue sur monsite.fr</h1>" | sudo tee /var/www/monsite.fr/index.html
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 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
sudo apt install certbot python3-certbot-apache -y
# Certbot configure automatiquement Apache
sudo certbot --apache -d monsite.fr -d www.monsite.fr
Certbot va :
# 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
# Éditer la configuration de sécurité
sudo nano /etc/apache2/conf-available/security.conf
Modifier ces directives :
ServerTokens Prod
ServerSignature Off
# 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>
# Dans le virtual host, ajouter :
# <Directory /var/www/monsite.fr>
# Options -Indexes +FollowSymLinks
# AllowOverride All
# </Directory>
# 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