# Créer un serveur web avec Python Dans ce tutoriel, nous allons voir comment créer rapidement et facilement un serveur web via Python 3 grâce à une seule ligne de commande à l'aide du module `http.server`. Le seul prérequis est d'avoir installé Python sur votre machine. > [!danger] Attention !<span style="font-weight: normal; color: var(--text-normal)"> Cette procédure est destinée aux tests et **ne doit pas être utilisée en production**.</span> > [!info] À savoir !<span style="font-weight: normal; color: var(--text-normal)"> Selon la version installée, vous devrez remplacer la commande `python` par le bon nom d'exécutable `python` ou `python3` ou `py` ou `py3` </span> ## Commande de base Voici la commande qui permet de partager votre répertoire de travail courant en HTTP via le port 8000 par défaut : ```python python -m http.server ``` Si vous recevez un message d'erreur "`Address already in use`" modifiez le port d'écoute en ajoutant l'option `<port>` : ```python python -m http.server 9000 ``` Si vous souhaitez identifier le programme en écoute sur le port 8000, utilisez : - Sous Windows : `netstat -anto` par exemple. - Sous Linux : `ss -petulan` par exemple ou consultez [[kb-lnx-lister-ports-tcp-udp]]. > [!info] A savoir ! <span style="font-weight: normal; color: var(--text-normal)">Si vous souhaitez mettre en écoute votre service web sur un port inférieur à 1024, il vous faudra une élévation de privilège. (via UAC ou sudo).</span> ## Options complémentaires Pour aller plus loin, sachez que la commande supporte d'autres options telles que : - `-d` : permet de spécifier le répertoire à partager par exemple. - `-b` : permet de spécifier l'interface d'écoute réseau. Par exemple, la commande ci-dessous exécute une instance de server web en écoute sur le port TCP `192.168.1.60:8080` avec le répertoire racine "*Downloads*" de l'utilisateur authentifié : ```python python -m http.server 8080 -b 192.168.1.60 -d "%userprofile%\downloads" ``` La page Web ci-dessous sera accessible depuis d'autres systèmes du réseau **si le pare-feu local ou celui du réseau n’empêche pas les connexions** entrantes sur le port sélectionné : ![[_img-kb-py-web-server.png|600]] ## Analyse des logs en temps réel Lorsque vous accéderez aux ressources de votre service web, des logs apparaîtront dans le terminal depuis lequel vous avez lancé le module `http.server` : ![[_img-kb-py-web-server-1.png|Logs de téléchargement GET]] # Conclusion Nous avons vu dans ce tutoriel déployer un service web léger grâce au module `http.server` de python. Cette méthode présente l'avantage d'être rapide et simple, mais présente des limitations importantes (absence de sécurité, gestion basique des performances, etc). Pour déployer un serveur Web plus complet, consultez l'article [[kb-lnx-lamp|Installation d'un serveur LAMP (pour environnement de test)]].