| Commandes Apache (Linux) | |
|---|---|
| Objectif | Commande |
| 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 |