Kodokon kodokon.com

localhost, puertos y "en mi máquina funciona"

Lanza un servidor en tu propio ordenador y entiende por qué nadie más lo ve.

7 min · 3 preguntas

Abrir esta lección en Kodokon

Cuando estás creando un sitio, no vas a publicarlo en internet cada vez que haces un cambio. Lanzas un servidor en tu propio ordenador y lo consultas con tu navegador. Esa máquina, la tuya, tiene un nombre reservado: localhost, literalmente "el anfitrión local". También tiene una dirección IP reservada, 127.0.0.1, que significa siempre "yo mismo", en cualquier máquina del mundo.

Pero un ordenador puede ejecutar varios servidores a la vez. ¿Cómo saber a cuál te estás dirigiendo? Gracias a los puertos. Si la dirección IP es la dirección del edificio, el puerto es el número del piso: un número entre 1 y 65535 que identifica el programa que debe responder. Algunos son convencionales: el puerto 80 para http, el 443 para https. En desarrollo se usan a menudo el 3000, el 5173 o el 8000. El puerto se escribe después del nombre, separado por dos puntos: http://localhost:8000.

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

Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
Un servidor web de verdad en un solo comando. En Windows, escribe py -m http.server 8000.

Deja esa ventana de terminal abierta: mientras el comando siga corriendo, el servidor responde. Abre ahora http://localhost:8000 en tu navegador y verás los archivos de la carpeta my-site. Para detener el servidor, vuelve al terminal y pulsa Ctrl + C.

¿Por qué tomarse esa molestia, si un doble clic en index.html también abre la página? Porque el doble clic abre el archivo con la dirección file:///C:/Users/..., y no http://. Y resulta que varias funcionalidades de la web se niegan en redondo a funcionar fuera del protocolo http: las peticiones a un servidor, los módulos de JavaScript, ciertas fuentes tipográficas. Obtendrás errores incomprensibles que desaparecerán como por arte de magia en cuanto pases por localhost.

BASH
lsof -i :8000

COMMAND   PID   USER   FD   TYPE  NODE NAME
python3  4821  sarah    3u  IPv4   TCP *:8000 (LISTEN)
¿Quién ocupa el puerto 8000? En Windows: netstat -ano | findstr :8000

Prueba de conocimientos

Comprueba que has retenido los puntos clave de esta lección.

  1. ¿A qué se refiere el nombre localhost?
    • Al servidor de tu proveedor de alojamiento
    • A tu propio ordenador
    • A la red wifi a la que estás conectado
  2. ¿Por qué un compañero no ve tu sitio al abrir http://localhost:3000?
    • Porque el número de puerto es incorrecto en su máquina
    • Porque localhost designa su propia máquina, no la tuya
    • Porque habría que usar https
  3. ¿Para qué sirve el número de puerto en http://localhost:8000?
    • Para indicar qué programa de la máquina debe responder
    • Para cifrar la comunicación
    • Para numerar las páginas del sitio