Apache2
Configuration
Installation
Cette section explique comment installer Apache2 sur un système Debian/Ubuntu. Apache2 est un serveur web open-source qui permet d'héberger des sites web et des applications web.
# Installation d'Apache2
sudo apt update
sudo apt install apache2
# Vérification de l'installation
sudo systemctl status apache2
Configuration des sites
Cette section montre comment configurer un site web basique dans Apache2. Un VirtualHost permet d'héberger plusieurs sites web sur le même serveur, chacun avec sa propre configuration.
# Création d'un nouveau site
sudo nano /etc/apache2/sites-available/exemple.conf # Exemple de configuration
# Contenu du fichier
# Remplacez par votre nom de domaine
ServerName www.exemple.com # Nom de domaine principal
DocumentRoot /var/www/exemple # Répertoire des fichiers du site
exemple>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
# Activation du site
sudo a2ensite exemple.conf
sudo systemctl reload apache2
Configuration avancée des hôtes virtuels
Cette section présente une configuration complète d'un hôte virtuel avec des fonctionnalités avancées pour la sécurité, les performances et la maintenance.
# Configuration complète d'un hôte virtuel
# Configuration de base
ServerName www.exemple.com # Définit le nom de domaine principal
ServerAlias exemple.com # Permet d'utiliser plusieurs noms de domaine
ServerAdmin webmaster@exemple.com # Email de contact
DocumentRoot /var/www/exemple # Répertoire des fichiers du site
# Journalisation personnalisée
ErrorLog ${APACHE_LOG_DIR}/exemple-error.log # Logs des erreurs
CustomLog ${APACHE_LOG_DIR}/exemple-access.log combined # Logs d'accès
# Options du répertoire
exemple>
Options Indexes FollowSymLinks MultiViews # Options de navigation
AllowOverride All # Permet l'utilisation de .htaccess
Require all granted # Contrôle d'accès
# Sécurité
Header set X-Content-Type-Options "nosniff" # Empêche le MIME-sniffing
Header set X-Frame-Options "SAMEORIGIN" # Protection contre le clickjacking
Header set X-XSS-Protection "1; mode=block" # Protection XSS
# Redirection
RedirectMatch 301 ^/ancien-article$ /nouvel-article # Redirection permanente
# Protection par mot de passe
exemple/admin>
AuthType Basic # Type d'authentification
AuthName "Zone Admin" # Message d'authentification
AuthUserFile /etc/apache2/.htpasswd # Fichier des mots de passe
Require valid-user # Nécessite une authentification
# Cache
ExpiresActive On # Active la gestion du cache
ExpiresByType image/jpg "access plus 1 year" # Cache des images
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType text/css "access plus 1 month" # Cache des fichiers CSS
ExpiresByType application/javascript "access plus 1 month" # Cache des fichiers JS
# Compression
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript # Compression des fichiers
# PHP
SetHandler application/x-httpd-php # Configuration du traitement PHP
# Protection contre les injections
RewriteEngine On # Active le moteur de réécriture
RewriteCond %{REQUEST_METHOD} ^(HEAD|TRACE|DELETE|TRACK) [NC] # Bloque les méthodes dangereuses
RewriteRule ^(.*)$ - [F,L] # Renvoie une erreur 403
- ServerName : Définit le nom de domaine principal du site. C'est l'URL que les utilisateurs utiliseront pour accéder au site.
- ServerAlias : Permet d'utiliser plusieurs noms de domaine pour le même site. Utile pour les domaines alternatifs ou les sous-domaines.
- ServerAdmin : Email de l'administrateur du site. Utilisé dans les pages d'erreur par défaut.
- DocumentRoot : Chemin vers les fichiers du site. C'est le répertoire racine où Apache cherche les fichiers à servir.
- ErrorLog/CustomLog : Configuration des fichiers de logs pour le suivi des erreurs et des accès au site.
- Options :
- Indexes : Permet l'affichage du contenu des répertoires quand il n'y a pas de fichier index
- FollowSymLinks : Permet de suivre les liens symboliques pour accéder aux fichiers
- MultiViews : Permet la négociation de contenu (choix automatique de la langue, format, etc.)
- AllowOverride : Permet l'utilisation de fichiers .htaccess pour la configuration au niveau du répertoire
- Require : Contrôle d'accès pour définir qui peut accéder au site
- Header : En-têtes de sécurité pour protéger contre diverses attaques web
- RedirectMatch : Permet de rediriger les URLs vers d'autres emplacements
- AuthType/AuthName : Configuration de l'authentification pour protéger des zones du site
- Expires : Configuration du cache pour améliorer les performances
- Deflate : Compression du contenu pour réduire la bande passante utilisée
Configuration SSL
Génération d'un certificat auto-signé
# Génération du certificat auto-signé
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/ssl/private/apache-selfsigned.key \
-out /etc/ssl/certs/apache-selfsigned.crt
# Les informations demandées :
# Country Name (2 letter code) [AU]: FR
# State or Province Name: Votre_Region
# Locality Name: Votre_Ville
# Organization Name: Votre_Organisation
# Organizational Unit Name: Votre_Service
# Common Name: localhost
# Email Address: votre@email.com
Configuration du VirtualHost SSL
# Création du fichier de configuration SSL
sudo nano /etc/apache2/sites-available/default-ssl.conf
# Contenu du fichier
<VirtualHost *:443>
ServerName localhost
DocumentRoot /var/www/html
SSLEngine on
SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt
SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key
<Directory /var/www/html>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Activation du SSL
# Activation du module SSL
sudo a2enmod ssl
# Activation du site SSL
sudo a2ensite default-ssl.conf
# Redémarrage d'Apache
sudo systemctl restart apache2
Points importants
- Les certificats auto-signés ne sont pas reconnus comme fiables par les navigateurs
- Idéal pour le développement et les environnements internes
- Les certificats expirent après 365 jours
- Nécessite une configuration manuelle du renouvellement
Débogage
Vérification des services
# Vérification d'Apache
sudo systemctl status apache2
# Vérification des logs
sudo tail -f /var/log/apache2/error.log
sudo tail -f /var/log/apache2/access.log
Problèmes courants
- Problèmes de permissions
- Erreurs de configuration
- Problèmes de SSL
- Problèmes de performance
Bonnes Pratiques
- Maintenir Apache à jour
- Configurer la sécurité (SSL, pare-feu)
- Surveiller les logs
- Configurer les sauvegardes
- Documenter les procédures
FAQ
🌐 Ton site affiche une erreur 403, où regardes-tu en priorité ?
- Vérification des permissions :
# Vérifier les permissions du dossier ls -la /var/www/html # Vérifier le propriétaire stat /var/www/html # Corriger les permissions si nécessaire chown -R www-data:www-data /var/www/html chmod -R 755 /var/www/html
- Vérification de la configuration Apache :
# Vérifier le VirtualHost cat /etc/apache2/sites-available/*.conf # Vérifier les directives Directory <Directory /var/www/html> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory>
- Vérification des logs :
# Logs d'erreur Apache tail -f /var/log/apache2/error.log # Logs d'accès tail -f /var/log/apache2/access.log
Le service Apache ne démarre plus, que fais-tu ?
- Vérification du statut :
# Vérifier l'état du service systemctl status apache2 # Vérifier les erreurs de démarrage journalctl -xe
- Vérification de la configuration :
# Tester la configuration apache2ctl -t # Vérifier les modules apache2ctl -M # Vérifier les ports netstat -tulpn | grep apache
- Vérification des logs :
# Logs système tail -f /var/log/syslog # Logs Apache tail -f /var/log/apache2/error.log
- Actions correctives :
- Redémarrer Apache :
systemctl restart apache2
- Vérifier les conflits de ports
- Vérifier les permissions des fichiers de configuration
- Vérifier l'espace disque
- Redémarrer Apache :