objectif
Servir rapidement un dossier en HTTP pour tester des pages ou des assets, sans installer d’outil supplémentaire, et sans exposer la machine au réseau.
code minimal
# python 3: servir le répertoire courant sur 127.0.0.1:8000
python3 -m http.server 8000 --bind 127.0.0.1
utilisation
# servir un dossier spécifique (ex: ./public) et afficher l'URL
PORT=8080
DIR="./public"
echo "http://127.0.0.1:$PORT/"
python3 -m http.server "$PORT" --bind 127.0.0.1 --directory "$DIR"
# choisir IPv6 local uniquement
python3 -m http.server 8000 --bind ::1 --directory ./public
# ouvrir le navigateur automatiquement (macOS)
open "http://127.0.0.1:8000/" &
python3 -m http.server 8000 --bind 127.0.0.1
# ouvrir le navigateur automatiquement (Linux avec xdg-utils)
xdg-open "http://127.0.0.1:8000/" >/dev/null 2>&1 &
python3 -m http.server 8000 --bind 127.0.0.1
variante(s) utile(s)
# journaliser les requêtes dans un fichier
python3 -m http.server 8000 --bind 127.0.0.1 2>&1 | tee server.log
# servir un dossier temporaire pour un test rapide
tmpdir="$(mktemp -d)"; echo "hello" > "$tmpdir/index.html"
python3 -m http.server 8000 --bind 127.0.0.1 --directory "$tmpdir"
# vérifier que le port est libre avant de lancer
if lsof -tiTCP:8000 -sTCP:LISTEN >/dev/null; then
echo "port 8000 occupé" >&2; exit 1
fi
python3 -m http.server 8000 --bind 127.0.0.1
notes
- liez toujours sur 127.0.0.1 (ou ::1) pour éviter d’exposer le service sur le réseau.
- l’option
--directorynécessite Python 3.7 ou plus. - ce serveur est minimal: pas de TLS, pas d’authentification; ne l’utilisez pas en production.
- les types MIME et le cache sont basiques; pour tester précisément, utilisez un serveur plus complet (nginx, caddy) ou un outil dédié.