Commandes Apache (Linux)
ObjectifCommande
Démarrer Apache sudo systemctl start apache2
Arrêter Apache sudo systemctl stop apache2
Redémarrer Apache sudo systemctl restart apache2
Recharger la configuration (sans interruption) sudo systemctl reload apache2
Voir le statut du serveur sudo systemctl status apache2
Activer Apache au démarrage sudo systemctl enable apache2
Désactiver Apache au démarrage sudo systemctl disable apache2
Tester la configuration sudo apache2ctl configtest
sudo apachectl -t
Voir la version d'Apache apache2 -v
Voir les modules chargés apache2ctl -M
Gestion des Modules
Activer un module sudo a2enmod nom_module
sudo systemctl reload apache2
Désactiver un module sudo a2dismod nom_module
sudo systemctl reload apache2
Modules importants à activer rewrite : Réécriture d'URL (.htaccess)
ssl : Support HTTPS
headers : Manipulation des en-têtes HTTP
expires : Gestion du cache navigateur
deflate : Compression gzip
proxy : Proxy inverse
proxy_http : Proxy HTTP
proxy_fcgi : FastCGI pour PHP-FPM
Activer plusieurs modules sudo a2enmod rewrite ssl headers expires deflate
Gestion des Sites (VirtualHosts)
Activer un site sudo a2ensite nom-site.conf
sudo systemctl reload apache2
Désactiver un site sudo a2dissite nom-site.conf
sudo systemctl reload apache2
Désactiver le site par défaut sudo a2dissite 000-default.conf
Lister les sites disponibles ls /etc/apache2/sites-available/
Lister les sites activés ls /etc/apache2/sites-enabled/
Configuration DNS Locale
Ajouter un domaine local sudo nano /etc/hosts

Ajouter :
127.0.0.1 monsite.local
127.0.0.1 www.monsite.local
Tester la résolution DNS ping monsite.local
VirtualHost HTTP (Apache 2.4+)
Fichier /etc/apache2/sites-available/monsite.conf
VirtualHost HTTPS avec SSL
Fichier /etc/apache2/sites-available/monsite-ssl.conf
Certificats SSL Auto-signés (Développement)
Générer un certificat SSL local sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/ssl/private/monsite.key \
-out /etc/ssl/certs/monsite.crt
Activer le module SSL sudo a2enmod ssl
sudo systemctl reload apache2
Redirection HTTP vers HTTPS Ajouter dans le VirtualHost :80 :

Redirect permanent / https://monsite.local/
Exemple Complet : Créer un Site Local
1. Créer le répertoire du site sudo mkdir -p /var/www/monsite
sudo chown -R $USER:$USER /var/www/monsite
echo "<h1>Ça fonctionne !</h1>" > /var/www/monsite/index.html
2. Ajouter au DNS local sudo nano /etc/hosts
127.0.0.1 monsite.local
3. Créer le VirtualHost sudo nano /etc/apache2/sites-available/monsite.conf
(Copier la configuration ci-dessus)
4. Activer le site sudo a2ensite monsite.conf
sudo systemctl reload apache2
5. Tester Ouvrir http://monsite.local
Fichier .htaccess
Activer les .htaccess Dans le VirtualHost :

AllowOverride All
Réécriture d'URL simple
Forcer HTTPS
Redirection www vers non-www
Bloquer l'accès à un fichier
Protection par mot de passe

Créer le fichier de mots de passe :
htpasswd -c /var/www/.htpasswd utilisateur
Cache navigateur
Compression gzip
Logs et Troubleshooting
Voir les logs d'erreur en temps réel sudo tail -f /var/log/apache2/error.log
Voir les logs d'accès sudo tail -f /var/log/apache2/access.log
Voir les logs d'un site spécifique sudo tail -f /var/log/apache2/monsite-error.log
Rechercher une erreur dans les logs sudo grep "error" /var/log/apache2/error.log
Vérifier les ports utilisés sudo netstat -tulpn | grep apache
sudo ss -tulpn | grep apache
Port 80 déjà utilisé sudo lsof -i :80
sudo kill <PID>
Tester la configuration sudo apache2ctl configtest
Erreurs courantes Syntax error : Vérifier la syntaxe du VirtualHost
Permission denied : Vérifier les droits (chown, chmod)
Port already in use : Un autre service utilise le port 80
Could not reliably determine : Ajouter ServerName dans /etc/apache2/apache2.conf
Apache sous Windows (XAMPP/WAMP)
Démarrer Apache (XAMPP) Panneau de contrôle XAMPP → Start Apache
Fichier de configuration C:\xampp\apache\conf\httpd.conf
VirtualHosts Windows C:\xampp\apache\conf\extra\httpd-vhosts.conf
Fichier hosts Windows C:\Windows\System32\drivers\etc\hosts

Ajouter :
127.0.0.1 monsite.local
Logs XAMPP C:\xampp\apache\logs\error.log
C:\xampp\apache\logs\access.log
Exemple VirtualHost XAMPP
Performance et Optimisation
Activer la compression gzip sudo a2enmod deflate
sudo systemctl reload apache2
Activer le cache sudo a2enmod expires
sudo a2enmod headers
sudo systemctl reload apache2
Limiter la mémoire utilisée Dans /etc/apache2/apache2.conf :

MaxRequestWorkers 150
MaxConnectionsPerChild 3000
Désactiver la signature du serveur Dans /etc/apache2/conf-available/security.conf :

ServerTokens Prod
ServerSignature Off
Activer HTTP/2 sudo a2enmod http2
Ajouter dans VirtualHost SSL :
Protocols h2 http/1.1
Sécurité
Bloquer l'accès aux fichiers sensibles
Désactiver le listing des répertoires Options -Indexes
Headers de sécurité
Limiter les requêtes (DDoS) sudo a2enmod evasive
sudo a2enmod security2
Configurer le firewall sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
Configuration PHP
Vérifier la version de PHP php -v
Fichier de configuration PHP /etc/php/8.2/apache2/php.ini
Augmenter les limites PHP Dans php.ini :

memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300
Activer les erreurs PHP (dev) display_errors = On
error_reporting = E_ALL
Désactiver les erreurs PHP (prod) display_errors = Off
log_errors = On