Configuración y despliegue de una página web en AWS

Actualizado: 2026-01-26 · Dificultad: Fácil · Tiempo estimado: 20–30 min

Resultado final: servidor web funcional en producción con HTTPS.

Requisitos

Objetivo

En este tutorial vamos a desplegar una página web estática sobre una instancia Ubuntu Server en AWS EC2, configurando un servidor Apache y asegurando la comunicación mediante HTTPS con un certificado digital válido.

Pasos

1) Crear la instancia EC2

Accedemos a la consola de AWS y, desde la barra de búsqueda, entramos al servicio EC2.

Acceso al servicio EC2

Una vez dentro, hacemos clic en el botón “Lanzar instancia”.

2) Configuración de la instancia

Seleccionamos los parámetros necesarios para nuestro servidor web:

Configuración de la instancia

En red, seleccionamos:

Configuración de red

Para el almacenamiento, 20 GB son suficientes para este escenario. Finalmente, lanzamos la instancia.

Validación inicial

Comprobamos que la instancia aparece como “En ejecución”. A continuación, nos conectamos por SSH usando la clave creada.

chmod 400 web-server.pem
ssh -i web-server.pem ubuntu@IP_PUBLICA

Troubleshooting

3) Instalación y configuración de Apache

Actualizamos el sistema:

sudo apt update && sudo apt upgrade -y

Instalamos Apache y lo habilitamos al arranque:

sudo apt install apache2 -y
sudo systemctl enable apache2
sudo systemctl start apache2

3.1) Permitir tráfico HTTP (puerto 80)

En el grupo de seguridad asociado a la instancia, añadimos una regla que permita tráfico TCP por el puerto 80.

Regla HTTP

Si todo es correcto, al acceder por navegador veremos la página por defecto de Apache.

Apache funcionando

4) Subir nuestra página web

En este caso el código está almacenado en GitHub, aunque también puede subirse mediante SCP.

scp -i web-server.pem -r ./mi_web/* ubuntu@IP_PUBLICA:/tmp/web

Eliminamos el contenido por defecto y copiamos nuestra web:

sudo rm -rf /var/www/html/*
sudo cp -r /tmp/web/* /var/www/html

Corregimos permisos (imprescindible):

sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html
Permisos correctos

Configuración personalizada de Apache

Si nuestra estructura no utiliza directamente /var/www/html, creamos un VirtualHost propio. En mi caso, el archivo index.html se encuentra en /var/www/html/html, por lo que el DocumentRoot del VirtualHost debe apuntar a esa ruta.

sudo nano /etc/apache2/sites-available/web.conf
VirtualHost Apache

Activamos la configuración:

sudo a2ensite web.conf
sudo a2dissite 000-default.conf
sudo systemctl reload apache2

5) Configurar HTTPS con certificado digital

Para asegurar la comunicación, vamos a instalar un certificado SSL/TLS gratuito usando Let’s Encrypt.

5.1) Abrir puerto 443

En el grupo de seguridad, añadimos una regla HTTPS (TCP, puerto 443).

5.2) Instalar Certbot

sudo apt install certbot python3-certbot-apache -y

Para continuar con el siguiente paso, es necesario que hayáis comprado un dominio y tengáis un registro tipo A apuntando a la IP pública de vuestra instancia AWS. Es importante que el dominio NO tenga registros AAAA (IPv6) activos si la instancia no está configurada para IPv6, ya que Let’s Encrypt validará primero por IPv6 y fallará.

5.3) Solicitar el certificado

sudo certbot --apache

Seleccionamos el dominio y activamos la redirección automática de HTTP a HTTPS.

5.4) Verificación

Accede a:
https://tudominio.com

Certbot configura automáticamente la renovación del certificado.

sudo certbot renew --dry-run

Notas / Mejores prácticas

En entornos de producción se recomienda desactivar los listados de directorios (Options -Indexes) para evitar exposición innecesaria de la estructura.


Volver a tutoriales.