Collection
Aucun article trouvé dans cette collection.

Lancer un serveur http en une ligne de code en Python - Tutoriel pratique
Table of content
Comment démarrer http.server depuis la ligne de commande
Exécuter un script à distance via l'interface de passerelle commune (cgi)
Servir du contenu statique et dynamique par programmation
Chiffrer la connexion avec https
Générer un certificat auto-signé avec python
Considérer les limitations de sécurité et de performance
Conclusion
Share with
Comment démarrer http.server depuis la ligne de commande
http.server. Ce module permet de lancer un serveur web minimaliste en une seule ligne de commande, ce qui est idéal pour des tests rapides ou le partage temporaire de fichiers sur un réseau local. Voici comment procéder :Vérification de l'installation de Python
Lancer le serveur HTTP
cd pour changer de répertoire, comme suit :Accéder au serveur
Changer le port
Sécurité et limites
http.server est conçu pour une utilisation en développement ou en réseau local. Il n'est pas sécurisé pour un usage en production, car il ne gère pas les connexions sécurisées (HTTPS) et n'offre pas de protection contre les attaques malveillantes.Exécuter un script à distance via l'interface de passerelle commune (cgi)
http.server de Python permet d'exécuter des scripts à distance. Cela peut être utile pour tester des scripts ou des applications simples. Voici comment configurer et exécuter des scripts CGI.Activer le mode CGI
http.server, vous devez démarrer le serveur en utilisant l'option --cgi. Assurez-vous d'être dans le répertoire où se trouvent vos scripts CGI, puis exécutez la commande suivante dans votre terminal :cgi-bin dans le répertoire courant.Exemple de script CGI
.py dans le répertoire cgi-bin.Permissions du script
chmod :Accéder et exécuter le script
Considérations de sécurité
http.server, vous pouvez facilement tester et exécuter des scripts Python à distance, avec une configuration minimale.Servir du contenu statique et dynamique par programmation
http.server. Cela permet de créer des applications web simples sans dépendre de frameworks lourds. Voici comment vous pouvez servir les deux types de contenu par programmation.Servir du contenu statique
SimpleHTTPRequestHandler. Voici comment configurer un serveur pour servir des fichiers statiques :http://localhost:8000 pour voir vos fichiers statiques.Servir du contenu dynamique
BaseHTTPRequestHandler et implémente la méthode do_GET ou do_POST, selon vos besoins.http.server. Cela est particulièrement utile pour des projets de petite envergure ou des démonstrations. Cependant, pour des applications plus complexes ou nécessitant une gestion avancée des requêtes, il est recommandé d'utiliser des frameworks web spécialisés comme Flask ou Django.Chiffrer la connexion avec https
ssl pour envelopper le socket du serveur HTTP. Voici comment procéder.Générer un certificat SSL
openssl. Exécutez la commande suivante dans votre terminal :key.pem (clé privée) et cert.pem (certificat).Configurer le serveur HTTPS
Accéder au serveur sécurisé
Considérations finales
Générer un certificat auto-signé avec python
cryptography. Voici comment créer un certificat auto-signé sans quitter l'environnement Python.Installer la bibliothèque cryptography
cryptography est installée. Vous pouvez l'ajouter à votre environnement Python avec la commande suivante :Génération du certificat
cryptography, vous pouvez créer un certificat auto-signé en utilisant le script suivant :key.pem et cert.pem. Ces fichiers peuvent ensuite être utilisés pour configurer un serveur HTTPS, comme décrit précédemment. Cette méthode offre un moyen pratique de gérer les certificats directement dans votre code Python, simplifiant ainsi le processus de développement.Considérer les limitations de sécurité et de performance
http.server de Python pour servir du contenu, il est crucial de comprendre ses limitations en matière de sécurité et de performance. Bien qu'il soit utile pour le développement et les tests, il présente des faiblesses pour un usage en production.Limitations de sécurité
- Absence de protections avancées : Le serveur n'inclut pas de fonctionnalités telles que la prévention des attaques par déni de service (DoS) ou la protection contre les injections SQL.
- Certificats auto-signés : L'utilisation de certificats auto-signés peut entraîner des avertissements de sécurité dans les navigateurs, ce qui peut être acceptable pour le développement, mais pas pour un site en production.
- Manque de journalisation : Les capacités de journalisation sont limitées, ce qui rend difficile la surveillance des activités suspectes.
Limitations de performance
http.server est conçu pour être simple et léger, ce qui signifie qu'il ne peut pas gérer efficacement un grand nombre de requêtes simultanées. Voici quelques limitations à prendre en compte :- Concurrence limitée : Le serveur utilise un modèle de traitement des requêtes à un seul fil, ce qui peut devenir un goulot d'étranglement sous une charge élevée.
- Absence de mise en cache : Il n'offre aucune fonctionnalité de mise en cache, ce qui peut affecter les performances si le même contenu est demandé fréquemment.
- Gestion basique des requêtes : Le traitement des requêtes est basique et ne bénéficie pas des optimisations présentes dans les serveurs web plus avancés.
Recommandations
Conclusion
http.server de Python offre une solution rapide et pratique pour lancer un serveur HTTP simple, idéal pour des tests ou le développement local. Il permet de servir facilement du contenu statique ou dynamique, d'exécuter des scripts à distance via CGI, et même de sécuriser les connexions avec HTTPS en utilisant des certificats auto-signés. Cependant, il est important de garder à l'esprit les limitations inhérentes à cette solution en termes de sécurité et de performance.Utilisation pour le développement
http.server constitue un outil précieux qui facilite la mise en place rapide d'un environnement de test. Il permet de visualiser les modifications de code en temps réel, de tester l'intégration de scripts, et de partager des fichiers localement sans configuration complexe. Cette simplicité d'utilisation est l'un des principaux avantages de ce module.Considérations pour la production
http.server puisse être utilisé pour des démonstrations ou des applications de petite envergure, il n'est pas adapté pour un déploiement en production en raison de ses faiblesses en matière de sécurité et de performance. Les développeurs devraient envisager de passer à des solutions plus robustes, telles que des serveurs web complets ou des frameworks qui offrent une gestion avancée des requêtes, des capacités de mise en cache, et des protections renforcées contre les cyberattaques.Perspectives futures
http.server est un excellent point de départ pour comprendre les bases du fonctionnement d'un serveur web et pour réaliser des tâches simples. Cependant, pour répondre aux exigences d'une application en production, il est nécessaire de se tourner vers des solutions plus adaptées qui garantissent la sécurité des données et la satisfaction des utilisateurs finaux.Share with
💙 Thank you for reading the article until the end!

Romain DE LA SOUCHÈRE
Tech Lead, CTO AXI Technologies
Expert Data Engineering et Cloud, Romain affiche plus de 11 ans d'expérience, dont plusieurs années comme Lead Developer sur des solutions Smart Building haute performance. Il y a conçu et mis en production des moteurs de traitement capables d'absorber des centaines de milliers de données de capteurs par minute, ainsi que des bases clusterisées gérant plus de 10 millions de données dynamiques. Certifié Microsoft Azure DevOps Engineer Expert, il maîtrise aussi bien le développement back-end (Python, C#) que le DevOps (Docker, Kubernetes, Terraform) et les agents LLM. Formateur en Python, cloud, DevOps et IA générative appliquée, il forme avec une obsession : Amener chaque apprenant à concevoir et déployer des architectures réellement scalables en production.
» Learn MoreAssociated articles
See all our articles →
Associated trainings
All our trainings →





