Commandes CLI Apache, gestion de serveurs HTTP, virtual hosts, modules, SSL, performance et sécurité. Guide pratique pour développeurs, DevOps et administrateurs système travaillant sur des environnements web professionnels.
httpd
Démarre le serveur Apache HTTP
-d--server-root-f--config-C--directive-c--directive-D--define-e--log-level-E--error-log-h--help-l--list-L--list-directives-M--list-modules-S--show-virtual-hosts-t--syntax-check-T--no-doc-root-check-v--version-V--show-version-X--debug-k
httpd -k start
Démarre Apache
-k
httpd -k stop
Arrête Apache
-k
httpd -k restart
Redémarre Apache
-k
httpd -k graceful
Redémarre gracieusement (sans couper les connexions)
-k
httpd -k graceful-stop
Arrête gracieusement
-k
httpd -t
Teste la syntaxe de la configuration
-t
httpd -T
Teste la configuration sans vérifier la racine des documents
-T
httpd -v
Affiche la version d'Apache
-v
httpd -V
Affiche la version et les options de compilation
-V
httpd -l
Liste les modules compilés statiquement
-l
httpd -M
Liste tous les modules chargés (statiques et dynamiques)
-M
httpd -S
Affiche la configuration des hôtes virtuels
-S
httpd -L
Liste toutes les directives de configuration disponibles
-L
httpd -f /path/to/httpd.conf
Utilise un fichier de configuration spécifique
-f--config
httpd -d /path/to/serverroot
Définit la racine du serveur (ServerRoot)
-d--server-root
httpd -C "Directive Value"
Traite la directive avant de lire la configuration
-C--directive
httpd -c "Directive Value"
Traite la directive après avoir lu la configuration
-c--directive
httpd -D NAME
Définit un paramètre pour <IfDefine>
-D--define
httpd -e level
Définit le niveau de log (emerg, alert, crit, error, warn, notice, info, debug)
-e--log-level
httpd -E /path/to/error.log
Envoie les erreurs dans un fichier spécifique
-E--error-log
httpd -X
Mode debug (un seul processus, foreground)
-X--debug
apachectl
Script de contrôle Apache (wrapper)
startstoprestartgracefulgraceful-stopconfigteststatusfullstatushelp-v-V-l-M-S-L
apachectl start
Démarre Apache via apachectl
apachectl stop
Arrête Apache via apachectl
apachectl restart
Redémarre Apache via apachectl
apachectl graceful
Redémarre gracieusement via apachectl
apachectl graceful-stop
Arrête gracieusement via apachectl
apachectl configtest
Teste la configuration via apachectl
apachectl status
Affiche un bref statut
apachectl fullstatus
Affiche le statut complet (nécessite lynx)
apache2ctl
Alias d'apachectl sur Debian/Ubuntu
startstoprestartgracefulgraceful-stopconfigtest
systemctl start httpd
Démarre Apache via systemd (RHEL/CentOS)
systemctl start apache2
Démarre Apache via systemd (Debian/Ubuntu)
systemctl stop httpd
Arrête Apache via systemd
systemctl restart httpd
Redémarre Apache via systemd
systemctl reload httpd
Recharge la configuration via systemd
systemctl status httpd
Affiche le statut via systemd
systemctl enable httpd
Active Apache au démarrage
systemctl disable httpd
Désactive Apache au démarrage
service httpd start
Démarre Apache via SysVinit
service apache2 start
Démarre Apache via SysVinit (Debian/Ubuntu)
service httpd stop
Arrête Apache via SysVinit
service httpd restart
Redémarre Apache via SysVinit
service httpd reload
Recharge la configuration via SysVinit
service httpd status
Affiche le statut via SysVinit
/etc/init.d/httpd start
Démarre Apache via script init.d
stoprestartreloadstatus
/etc/init.d/apache2 start
Démarre Apache via script init.d (Debian/Ubuntu)
stoprestartreloadstatus
a2enmod
Active un module Apache (Debian/Ubuntu)
-f--force-q--quietmodule_name
a2enmod rewrite
Active le module mod_rewrite
a2enmod ssl
Active le module SSL
a2enmod headers
Active le module mod_headers
a2enmod proxy proxy_http
Active les modules proxy
a2dismod
Désactive un module Apache (Debian/Ubuntu)
-f--force-q--quietmodule_name
a2dismod rewrite
Désactive le module mod_rewrite
a2ensite
Active un site (hôte virtuel) (Debian/Ubuntu)
-q--quietsite_name
a2ensite example.com.conf
Active le site example.com
a2ensite 000-default
Active le site par défaut
a2dissite
Désactive un site (Debian/Ubuntu)
-q--quietsite_name
a2dissite example.com.conf
Désactive le site example.com
a2query
Interroge la configuration Apache (Debian/Ubuntu)
-m-s-v-a-q-d
a2query -m rewrite
Vérifie si le module rewrite est activé
-m
a2query -s example.com
Vérifie si le site example.com est activé
-s
a2query -v
Affiche la version d'Apache
-v
a2query -a
Liste tous les modules et sites activés
-a
a2conf
Active/désactive une configuration (Debian/Ubuntu)
enabledisable
a2enconf security
Active la configuration security.conf
a2disconf security
Désactive la configuration security.conf
htpasswd
Gère les fichiers de mots de passe pour l'authentification basique
-c-n-m-d-p-s-B-C-D-v-b-i-r
htpasswd -c /etc/apache2/.htpasswd user1
Crée un nouveau fichier et ajoute user1
-c
htpasswd /etc/apache2/.htpasswd user2
Ajoute user2 à un fichier existant
htpasswd -b /etc/apache2/.htpasswd user3 password
Ajoute un utilisateur avec mot de passe en ligne de commande
-b
htpasswd -B /etc/apache2/.htpasswd user4
Utilise l'algorithme bcrypt
-B
htpasswd -C 12 /etc/apache2/.htpasswd user5
bcrypt avec coût 12 (2^12 itérations)
-C
htpasswd -m /etc/apache2/.htpasswd user6
Utilise MD5 (par défaut sur Windows/NetWare)
-m
htpasswd -s /etc/apache2/.htpasswd user7
Utilise SHA-1
-s
htpasswd -p /etc/apache2/.htpasswd user8
N'utilise pas de chiffrement (plain text)
-p
htpasswd -d /etc/apache2/.htpasswd user9
Utilise crypt() (déprécié)
-d
htpasswd -D /etc/apache2/.htpasswd user1
Supprime un utilisateur
-D
htpasswd -v /etc/apache2/.htpasswd user1
Vérifie le mot de passe d'un utilisateur
-v
htpasswd -n user
Affiche le résultat sur stdout sans modifier le fichier
-n
htdigest
Gère les fichiers pour l'authentification Digest
-c-v
htdigest -c /etc/apache2/.htdigest "Restricted Area" user1
Crée un fichier digest
-c
htdigest /etc/apache2/.htdigest "Restricted Area" user2
Ajoute un utilisateur
htdigest -v /etc/apache2/.htdigest "Restricted Area" user1
Vérifie le mot de passe
-v
htcacheclean
Nettoie le cache disque de mod_cache_disk
-d-D-i-I-l-L-n-p-P-t-r-R-v-A
htcacheclean -d 60 -p /var/cache/apache2/mod_cache_disk -l 100M
Nettoie le cache (démon, intervalle 60 min, limite 100 Mo)
-d-p-l
htcacheclean -D -p /var/cache/apache2/mod_cache_disk -l 100M
Nettoie une fois et quitte
-D-p-l
htcacheclean -n -p /var/cache/apache2/mod_cache_disk
Mode simulation (ne supprime rien)
-n
htcacheclean -t -p /var/cache/apache2/mod_cache_disk
Supprime tous les fichiers vides
-t
htcacheclean -v -p /var/cache/apache2/mod_cache_disk
Mode verbeux
-v
htcacheclean -A -p /var/cache/apache2/mod_cache_disk
Liste les URLs dans le cache
-A
htdbm
Manipule les bases DBM pour l'authentification
-c-l-x-m-t-b-d-p-s-v
htdbm -c /etc/apache2/passwd.dbm user1
Crée une base DBM et ajoute user1
-c
htdbm -l /etc/apache2/passwd.dbm
Liste tous les utilisateurs
-l
htdbm -x /etc/apache2/passwd.dbm user1
Supprime un utilisateur
-x
htdbm -b /etc/apache2/passwd.dbm user2 password
Ajoute avec mot de passe en ligne de commande
-b
htdbm -v /etc/apache2/passwd.dbm user1
Vérifie le mot de passe
-v
logresolve
Résout les adresses IP en noms d'hôte dans les logs
-c-s
logresolve -c < access.log > resolved.log
Résout avec vérification DNS inversée
-c
logresolve -s stats.txt < access.log > resolved.log
Sauvegarde les statistiques DNS
-s
rotatelogs
Rotation des logs avec tuyau (pipe)
-l-L-f-t-v-e-c-p-n
rotatelogs /var/log/apache2/access.%Y-%m-%d.log 86400
Rotation quotidienne (86400 secondes)
rotatelogs -l /var/log/apache2/access.log 10M
Rotation à 10 Mo (heure locale)
-l
rotatelogs -L /var/log/apache2/access.log /var/log/apache2/access.%Y%m%d.log 86400
Rotation avec lien symbolique vers le fichier courant
-L
rotatelogs -f /var/log/apache2/access.log 60
Force la rotation toutes les minutes
-f
rotatelogs -t /var/log/apache2/access.log 3600
Rotation avec timestamp dans le nom du fichier
-t
rotatelogs -v /var/log/apache2/access.log 10M
Mode verbeux (affiche les rotations)
-v
rotatelogs -e /var/log/apache2/error.log 10M
Écho les logs vers stderr également
-e
rotatelogs -c /var/log/apache2/access.log 10M
Crée le fichier de log s'il n'existe pas
-c
rotatelogs -p /path/to/script /var/log/apache2/access.log 10M
Exécute un script après rotation
-p
rotatelogs -n 5 /var/log/apache2/access.log 10M
Garde 5 fichiers de log après rotation
-n
split-logfile
Sépare un log combiné en fichiers par hôte virtuel
-d-p-v
split-logfile < access.log
Sépare les logs vers des fichiers par hôte
split-logfile -d /var/log/vhosts < access.log
Dossier de destination personnalisé
-d
split-logfile -p prefix_ < access.log
Préfixe pour les fichiers
-p
checkgid
Vérifie les permissions de groupe pour suexec
groupgid
checkgid www-data
Vérifie si le groupe www-data est valide
suexec
Wrapper pour exécuter des CGI avec des privilèges utilisateur
-V
suexec -V
Affiche les options de compilation de suexec
-V
fcgistarter
Démarre un processus FastCGI
-c-p-i-a-s-M-S-P-C-h
fcgistarter -c /usr/bin/php-cgi -p /tmp/php.sock -M 0660 -S 5
Démarre PHP FastCGI sur socket Unix
-c-p-M-S
fcgistarter -c /usr/bin/php-cgi -a 127.0.0.1 -p 9000 -i apache
Démarre sur port TCP
-c-a-p-i
ab
Apache Bench - outil de benchmark
-n-c-t-k-H-p-T-A-P-X-v-w-x-y-z-C-e-g-h-i-m-q-r-s-S-u-V
ab -n 1000 -c 10 http://localhost/
1000 requêtes, 10 concurrentes
-n-c
ab -t 30 -c 10 http://localhost/
Test limité à 30 secondes
-t-c
ab -k -n 1000 -c 10 http://localhost/
Utilise Keep-Alive
-k
ab -H "Accept-Encoding: gzip" -n 1000 http://localhost/
Ajoute un en-tête personnalisé
-H
ab -p postdata.txt -T application/json http://localhost/api
POST avec données
-p-T
ab -A user:pass -n 1000 http://localhost/
Authentification basique
-A
ab -e results.csv -n 1000 http://localhost/
Exporte les résultats en CSV
-e
ab -g gnuplot.data -n 1000 http://localhost/
Exporte pour Gnuplot
-g
ab -w out.html -n 1000 http://localhost/
Rapport HTML
-w
ab -v 2 -n 10 http://localhost/
Mode verbeux niveau 2
-v
ab -q -n 1000 http://localhost/
Mode silencieux (pas de progression)
-q
ab -r -n 1000 http://localhost/
Continue après les erreurs de socket
-r
ab -C session=12345 -n 1000 http://localhost/
Ajoute un cookie
-C
htdbm
Gère les fichiers DBM
-c-l-x-m-t-b-d-p-s-v-B
httxt2dbm
Convertit un fichier texte en base DBM
-f-i-v
httxt2dbm -f SDBM -i passwd.txt -o passwd.dbm
Convertit vers SDBM
-f-i-o
httxt2dbm -f DB -i passwd.txt -o passwd.dbm
Convertit vers Berkeley DB
-f-i-o
httxt2dbm -f GDBM -i passwd.txt -o passwd.dbm
Convertit vers GNU DBM
-f-i-o
httxt2dbm -f default -i passwd.txt -o passwd.dbm
Utilise le type par défaut
-f-i-o
httxt2dbm -v -i passwd.txt -o passwd.dbm
Mode verbeux
-v-i-o
apxs
Outil d'extension Apache (compilation de modules)
-c-i-a-A-n-q-g-e-S-I-L-l-Wl-p-P-v
apxs -c mod_example.c
Compile un module
-c
apxs -i -a -n example mod_example.la
Installe et active un module
-i-a-n
apxs -i mod_example.la
Installe un module sans l'activer
-i
apxs -e -a -n example mod_example.la
Active un module installé
-e-a-n
apxs -q CFLAGS
Affiche les flags de compilation
-q
apxs -g -n example
Génère un template de module
-g-n
tail -f /var/log/httpd/access_log
Surveille le log d'accès en temps réel (RHEL)
-f-n
tail -f /var/log/apache2/access.log
Surveille le log d'accès en temps réel (Debian)
-f-n
tail -f /var/log/httpd/error_log
Surveille le log d'erreur
-f
tail -n 100 /var/log/apache2/access.log
Affiche les 100 dernières lignes
-n
grep "404" /var/log/apache2/access.log
Recherche les erreurs 404
-c-v-i-A-B
grep -c "GET" /var/log/apache2/access.log
Compte les requêtes GET
-c
awk '{print $1}' /var/log/apache2/access.log | sort | uniq -c | sort -rn | head -10
Top 10 des IP
awk '{print $7}' /var/log/apache2/access.log | sort | uniq -c | sort -rn | head -10
Top 10 des URLs
cat /var/log/apache2/access.log | wc -l
Compte le nombre de requêtes
awk '{sum+=$10} END {print sum}' /var/log/apache2/access.log
Somme des bytes transférés (colonne 10)
grep "$(date +%d/%b/%Y)" /var/log/apache2/access.log
Logs du jour
awk '$9 >= 400' /var/log/apache2/access.log
Requêtes avec erreur (code >= 400)
awk '$9 == 200' /var/log/apache2/access.log | wc -l
Nombre de requêtes réussies
goaccess /var/log/apache2/access.log
Analyse interactive avec GoAccess
-f--log-format-o--real-time-html
goaccess /var/log/apache2/access.log -o report.html
Rapport HTML
-o
goaccess /var/log/apache2/access.log --log-format=COMBINED -o report.html
Format de log combiné
--log-format
logrotate -f /etc/logrotate.d/apache2
Force la rotation des logs
-f-d-v
logrotate -d /etc/logrotate.d/apache2
Teste la rotation (dry run)
-d
apache2 -S 2>&1 | grep "namevhost\|alias"
Affiche les hôtes virtuels configurés
apache2ctl -S | grep "port 80"
Hôtes virtuels sur le port 80
apache2ctl -S | grep "port 443"
Hôtes virtuels sur le port 443
httpd -t -D DUMP_VHOSTS
Affiche les hôtes virtuels (méthode alternative)
ps aux | grep apache
Processus Apache (Debian/Ubuntu)
ps aux | grep httpd
Processus Apache (RHEL/CentOS)
netstat -tulpn | grep apache
Ports en écoute
ss -tulpn | grep apache
Sockets en écoute (alternative)
lsof -i :80
Processus utilisant le port 80
curl -I http://localhost
Teste l'en-tête HTTP
-I-v
curl -v http://localhost
Teste avec détails
-v
wget --spider http://localhost
Vérifie si le serveur répond
--spider-S
openssl s_client -connect localhost:443 -servername example.com
Teste la connexion SSL
-connect-servername-showcerts
echo | openssl s_client -connect localhost:443 2>/dev/null | openssl x509 -noout -dates
Dates de validité du certificat
certbot --apache -d example.com -d www.example.com
Certificat Let's Encrypt avec Certbot
--apache-d--email--agree-tos--redirect--dry-run
certbot --apache -d example.com --dry-run
Teste l'obtention du certificat
--dry-run
certbot renew --apache
Renouvelle les certificats
--apache--dry-run--post-hook
certbot delete --cert-name example.com
Supprime un certificat
--cert-name
certbot certificates
Liste les certificats
apache2 -v
Version d'Apache (Debian)
httpd -v
Version d'Apache (RHEL)
dpkg -l | grep apache2
Packages Apache installés (Debian)
rpm -qa | grep httpd
Packages Apache installés (RHEL)
a2enmod php8.1
Active le module PHP 8.1
a2dismod php7.4
Désactive le module PHP 7.4
a2enmod userdir
Active les répertoires utilisateurs (~user/public_html)
a2enmod actions
Active le module actions (CGI)
a2enmod expires
Active le module expires (cache)
a2enmod deflate
Active la compression gzip
a2enmod security2
Active ModSecurity (si installé)
a2enmod pagespeed
Active PageSpeed (si installé)