Kodokon kodokon.com

localhost, ports, et « ça marche chez moi »

Lancez un serveur sur votre propre machine et comprenez pourquoi personne d'autre ne le voit.

7 min · 3 questions

Ouvrir cette leçon dans Kodokon

Quand vous développez un site, vous n'allez pas le publier sur Internet à chaque modification. Vous lancez un serveur sur votre propre ordinateur, et vous le consultez avec votre navigateur. Cette machine, la vôtre, porte un nom réservé : localhost, littéralement « l'hôte local ». Elle a aussi une adresse IP réservée, 127.0.0.1, qui signifie toujours « moi-même », sur n'importe quelle machine du monde.

Mais un ordinateur peut faire tourner plusieurs serveurs en même temps. Comment savoir auquel on s'adresse ? Grâce aux ports. Si l'adresse IP est l'adresse de l'immeuble, le port est le numéro de l'appartement : un nombre entre 1 et 65535 qui désigne le programme censé répondre. Certains sont conventionnels : le port 80 pour http, le 443 pour https. En développement, on utilise souvent 3000, 5173 ou 8000. Ce port s'écrit après le nom, séparé par deux-points : http://localhost:8000.

BASH
cd mon-site
python3 -m http.server 8000

Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
Un vrai serveur web en une commande. Sur Windows, écrivez py -m http.server 8000.

Laissez cette fenêtre de terminal ouverte : tant que la commande tourne, le serveur répond. Ouvrez maintenant http://localhost:8000 dans votre navigateur, et vous verrez les fichiers du dossier mon-site. Pour arrêter le serveur, revenez dans le terminal et appuyez sur Ctrl + C.

Pourquoi se donner cette peine, alors qu'un double-clic sur index.html ouvre aussi la page ? Parce que le double-clic ouvre le fichier avec l'adresse file:///C:/Users/..., et non http://. Or plusieurs fonctionnalités du web refusent de marcher hors du protocole http : les requêtes vers un serveur, les modules JavaScript, certaines polices. Vous obtiendrez des erreurs incompréhensibles qui disparaîtront comme par magie dès que vous passerez par localhost.

BASH
lsof -i :8000

COMMAND   PID   USER   FD   TYPE  NODE NAME
python3  4821  sarah    3u  IPv4   TCP *:8000 (LISTEN)
Qui occupe le port 8000 ? Sur Windows : netstat -ano | findstr :8000

Quiz de validation

Vérifiez que vous avez bien retenu les points clés de cette leçon.

  1. Que désigne le nom localhost ?
    • Le serveur de votre hébergeur
    • Votre propre ordinateur
    • Le réseau wifi auquel vous êtes connecté
  2. Pourquoi un collègue ne voit-il pas votre site en ouvrant http://localhost:3000 ?
    • Parce que le numéro de port est incorrect chez lui
    • Parce que localhost désigne sa propre machine, pas la vôtre
    • Parce qu'il faudrait utiliser https
  3. À quoi sert le numéro de port dans http://localhost:8000 ?
    • À indiquer quel programme de la machine doit répondre
    • À chiffrer la communication
    • À numéroter les pages du site