Python: création d'un serveur http

Créer ton premier serveur web en Python 🌐🐍

Tu vas apprendre à lancer un vrai serveur web sur ton ordinateur, avec Python, et à y accéder depuis ton navigateur via http://localhost:8888/.
Public : 11 → 18 ans Ressource prof : client/serveur + réseau local

0. Avant de commencer : c’est quoi un serveur web ?

Quand tu tapes une adresse dans ton navigateur (par ex. https://www.example.com), ton ordinateur envoie une demande à un autre ordinateur : le serveur. Ce serveur renvoie des fichiers (HTML, images, CSS, JS…) que ton navigateur affiche.

  • Client : ton navigateur (Chrome, Firefox…).
  • Serveur : un programme qui attend les demandes et renvoie des réponses.
  • Protocole : le “langage” de communication. Ici : HTTP.
Dans cette activité, ton propre ordinateur sera à la fois client et serveur. L’adresse spéciale localhost signifie “moi-même / mon ordinateur”.
QCM – Client ou serveur ?
1. Quand tu ouvres YouTube dans ton navigateur, ton navigateur est :



1. Créer la page web à servir (HTML)

On commence par écrire un petit fichier HTML que le serveur Python enverra au navigateur.

Étape 1 – Créer le fichier index.html

  1. Crée un nouveau dossier sur ton ordinateur, par exemple : mon_serveur_python.
  2. Dans ce dossier, crée un fichier nommé index.html.
  3. Copie-colle le code ci-dessous dans ce fichier :
<!DOCTYPE html>
<html lang="fr">
<head>
  <meta charset="UTF-8">
  <title>Mon premier serveur Python</title>
  <style>
    body {
      font-family: Arial, sans-serif;
      background: #f5f5f5;
      margin: 0;
      padding: 40px;
      text-align: center;
    }
    h1 { color: #1a237e; }
    p  { color: #424242; }
    .badge {
      display: inline-block;
      margin-top: 10px;
      padding: 6px 12px;
      border-radius: 999px;
      background: #e8eaf6;
      color: #1a237e;
    }
  </style>
</head>
<body>
  <h1>Hello depuis mon serveur Python !</h1>
  <p>Si tu vois ce message dans ton navigateur, ton serveur fonctionne 🎉</p>
  <div class="badge">Servi par Python sur http://localhost:8888/</div>
</body>
</html>
Exercice A – Personnalise ta page
  • Change le texte du <h1> (par exemple : “Serveur de Léa” ou “Serveur de Maxime”).
  • Ajoute une ligne en plus avec ton langage préféré (Scratch, Python, JS…).
  • Pour les plus avancés : ajoute une image avec <img>.

2. Lancer un serveur web ultra-simple avec Python

Python contient déjà un mini-serveur web. Pas besoin d’installer autre chose ! On va le démarrer dans le dossier où se trouve index.html.

Étape 2 – Ouvrir un terminal / invite de commandes

Windows Appuie sur Win + R, tape cmd, puis Entrée.
macOS Ouvre l’application Terminal (via Spotlight).
Linux Ouvre ton terminal habituel.

Étape 3 – Aller dans le dossier du projet

Dans ton terminal, tape par exemple :

cd chemin/vers/mon_serveur_python

Remplace chemin/vers/mon_serveur_python par le vrai chemin sur ta machine.

Étape 4 – Démarrer le serveur sur le port 8888

Dans le dossier où se trouve index.html, tape la commande suivante :

python -m http.server 8888

Ou si ta machine utilise python3 :

python3 -m http.server 8888
Explication rapide :
-m http.server dit à Python : “lance le module de serveur web simple”. 8888 est le port utilisé (une sorte de numéro de porte sur ton ordinateur).
Exercice B – Changer de port
  • Arrête le serveur avec Ctrl + C dans le terminal.
  • Relance la commande en utilisant le port 8000 à la place de 8888.
  • Dans ton navigateur, essaye http://localhost:8000/.

3. Tester dans le navigateur : http://localhost:8888/

Étape 5 – Ouvrir le navigateur

  1. Ouvre ton navigateur (Chrome, Firefox, Edge, …).
  2. Dans la barre d’adresse, tape : http://localhost:8888/
  3. Valide avec Entrée.

Si tout va bien, tu dois voir ta page index.html s’afficher. Ton serveur Python vient de te l’envoyer !

QCM – Que signifie “localhost:8888” ?



Exercice C – Modifier pendant que le serveur tourne
  • Laisse le serveur tourner dans le terminal.
  • Modifie le texte dans index.html (par ex. change la couleur, le titre…).
  • Enregistre le fichier puis rafraîchis la page dans le navigateur (touche F5).
  • Observe : la nouvelle version est servie automatiquement.
Pour arrêter le serveur à tout moment : clique dans la fenêtre du terminal, puis tape Ctrl + C.

4. Variante : écrire ton propre fichier serveur.py

La commande python -m http.server est très pratique, mais on peut aussi écrire un petit script Python personnalisé.

Étape 6 – Créer serveur.py

  1. Dans le même dossier que index.html, crée un fichier serveur.py.
  2. Copie-colle ce code dedans :
from http.server import SimpleHTTPRequestHandler
from socketserver import TCPServer

PORT = 8888

# Handler par défaut : sert les fichiers du dossier courant
handler = SimpleHTTPRequestHandler

with TCPServer(("", PORT), handler) as httpd:
    print(f"Serveur lancé sur http://localhost:{PORT}/")
    try:
        httpd.serve_forever()
    except KeyboardInterrupt:
        print("\nArrêt du serveur...")
        httpd.server_close()

Puis, dans le terminal (dans le bon dossier) :

python serveur.py
Exercice D – Personnaliser le port dans le code
  • Change la valeur de PORT (par ex. PORT = 9000).
  • Relance le serveur et teste http://localhost:9000/.
  • Explique la différence entre l’ancienne adresse et la nouvelle.

5. Pour aller plus loin (idées pour profs & curieux)

  • Faire servir plusieurs fichiers : about.html, contact.html, etc.
  • Ajouter une feuille de style externe styles.css et la faire servir par le même serveur.
  • Tester l’accès depuis un autre ordinateur du même réseau local (en utilisant l’adresse IP au lieu de localhost, sous la supervision d’un adulte ou de l’enseignant).
  • Introduire ensuite un mini-framework web (Flask, FastAPI…) pour générer des pages dynamiques (pour les 15–18 ans).
  • Expliquer les codes HTTP (200, 404…) en modifiant légèrement le handler.

Tu viens de mettre en place un vrai serveur web avec Python. Ce que tu viens de faire est la base de ce qui se passe derrière des millions de sites sur Internet. 🚀

Commentaires

Posts les plus consultés de ce blog

Basthon.fr

mBot2 - programmation mBlock/python

Mario Kart 2D