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
- Cuenta activa en AWS
- Conocimientos básicos de Linux y terminal
- Dominio propio (para HTTPS)
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.
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:
- Nombre: Servidor Web
- Imagen: Ubuntu Server (puede usarse cualquier distribución Linux)
- Tipo de instancia: t3.micro (económica y suficiente para pruebas o sitios pequeños)
- Par de claves: crear uno nuevo si no existe. Esta clave será necesaria para acceder por SSH sin contraseña.
En red, seleccionamos:
- Crear grupo de seguridad nuevo
- Permitir tráfico SSH desde nuestra IP
- Permitir tráfico HTTP y HTTPS
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
- No conecta por SSH: verificar que la clave es correcta y que tiene permisos 400.
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.
Si todo es correcto, al acceder por navegador veremos la página por defecto de Apache.
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
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
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.