Servidor disponible solo los jueves de 10:30 a 12:30 y los viernes de 10:00 a 13:00 (hora de Madrid); fuera de ese horario está apagado. Fuera del horario, usa la documentación local del material que te descargaste (el README.md de cada carpeta).
G214 · CUNEF
Inicio / tema1

Tema 1 · 2 · Publicar una página web desde tu máquina

Presentación del Tema 1: «Ejemplo creación VM (IaaS)» (servidor web). Duración: unos 15 minutos. Coste: el de la máquina encendida (céntimos).

Qué vas a hacer

Arrancar un servidor web mínimo dentro de tu máquina virtual, abrir el puerto 80 solo para ti en el Security Group y comprobar desde tu navegador que la página se ve. Con esto entiendes la diferencia entre «el servicio funciona dentro de la máquina» y «el cortafuegos deja pasar el tráfico».

Esta carpeta no tiene ficheros que descargar: los comandos se escriben en la máquina y los cambios de red se hacen en la consola.

Antes de empezar

Paso a paso

Paso 1 · Lanzar el servidor web

Entra en la máquina y, dentro, línea a línea:

mkdir ~/web
echo "Hola desde mi VM" > ~/web/hola.txt
cd ~/web
sudo python3 -m http.server 80

Qué debes ver: Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) .... El comando publica la carpeta en la que estás en el puerto 80 (HTTP). Para pararlo: Ctrl+C.

El servidor ocupa esta terminal mientras funciona (no vuelve el prompt). Para ejecutar otros comandos, por ejemplo curl http://localhost, abre una segunda terminal y entra otra vez con ssh (misma orden que en el apartado 2.2 de la carpeta anterior); la primera sigue sirviendo la página. Cuando acabes, vuelve a la primera y pulsa Ctrl+C.

Seguridad. Léelo antes de ejecutar nada. sudo python3 -m http.server corre como administrador y sirve el directorio actual sin autenticación ni cifrado. Lanzado desde /, cualquiera que llegue al puerto lee /etc/shadow y /root/ (responde HTTP 200); lanzado desde tu carpeta personal expone .ssh/authorized_keys y todos tus ficheros, incluida tu llave. Nunca lo arranques desde / ni desde ~: usa siempre la carpeta de prueba ~/web.

Paso 2 · Abrir el puerto 80 solo para ti

EC2 > Security Groups > el de tu máquina > Edit inbound rules > Add rule: tipo HTTP (puerto 80), origen My IP. Guarda.

Paso 3 · Comprobarlo desde el navegador

  1. Localiza tu IP pública: EC2 > Instances > tu máquina > Public IPv4 address (¡cada uno tiene una distinta! No es la IP privada 172.31..., que solo vale dentro de AWS).
  2. En el navegador escribe http://<IP pública>, con http, sin la S de https. El navegador puede añadir https solo y marcar el sitio como No seguro: es normal, el servidor no tiene certificado.

Qué debes ver: Directory listing for / con un único enlace, hola.txt.

También puedes comprobarlo sin navegador, desde tu equipo: curl http://<IP pública> devuelve el HTML de la página, con <title>Directory listing for /</title> y una línea <li><a href="hola.txt">hola.txt</a></li>.

Si la página se queda cargando: casi siempre falta la regla del puerto 80, o tu IP ha cambiado, o el servidor no sigue en marcha. Desde dentro de la máquina (en la segunda terminal), curl http://localhost debe responder; si responde ahí y no desde el navegador, el problema es el Security Group.

Paso 4 · Cerrar el servidor

Vuelve a la primera terminal y pulsa Ctrl+C. Quita la regla HTTP del Security Group si ya no la necesitas (o déjala para la siguiente carpeta, donde vuelves a lanzar el servidor).

Errores frecuentes

Síntoma Causa Solución
curl http://localhost no se puede escribir: la terminal está ocupada El servidor web se ejecuta en primer plano Abre una segunda terminal y entra con otro ssh
La página web se queda cargando Falta la regla del puerto 80, o escribiste https:// Añade la regla HTTP (puerto 80) con tu IP y usa http://
Connection refused Llegas a la máquina, pero nadie escucha en ese puerto Lanza el servidor (paso 1)
Address already in use al lanzar el servidor Ya hay otro servidor en el puerto 80 (el que dejaste en otra terminal) Ciérralo con Ctrl+C en su terminal

Cómo sabes que has terminado

Anterior: 01.01-CrearYConectarVM.md · Siguiente: 01.03-PararRedimensionarBorrar.md