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
- [ ] Has hecho
01.01-CrearYConectarVM.md: tienes la máquinamaquinaen Running y sabes entrar conssh(o con el botón Connect). - [ ] Región eu-north-1.
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.servercorre como administrador y sirve el directorio actual sin autenticación ni cifrado. Lanzado desde/, cualquiera que llegue al puerto lee/etc/shadowy/root/(responde HTTP 200); lanzado desde tu carpeta personal expone.ssh/authorized_keysy 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.
- Si tus compañeros deben ver tu página, usa
0.0.0.0/0solo durante la práctica. - Cuando termines, elimina la regla (o cierra el servidor y la máquina).
Paso 3 · Comprobarlo desde el navegador
- 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). - En el navegador escribe
http://<IP pública>, con http, sin la S de https. El navegador puede añadirhttpssolo 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
- [ ] Ves
Directory listing for /conhola.txtdesde el navegador, conhttp://y tu IP pública. - [ ] Sabes explicar por qué sin la regla del puerto 80 la página no carga aunque el servidor esté en marcha (el Security Group es el cortafuegos de la máquina).
- [ ] No borres la máquina todavía: falta pararla y cambiarle el tamaño.
Anterior: 01.01-CrearYConectarVM.md · Siguiente: 01.03-PararRedimensionarBorrar.md