Introducción
Si estás buscando una solución sólida, escalable y de alto rendimiento para tu página web, Amazon Web Services (AWS) es una de las mejores opciones. En este tutorial te guiaré a través del proceso de compra de dominio, configuración de servidor en AWS y la implementación de tu sitio web en WordPress utilizando Docker y Nginx. Veremos cada paso y explicaremos cómo estas herramientas se conectan entre sí.
Herramientas y Servicios Utilizados
- Proveedor de Dominios (Route53, Namecheap, GoDaddy): Compra el nombre de dominio para tu sitio web.
- Amazon Web Services (AWS): Plataforma de nube que ofrece servicios como Amazon EC2 para servidores y Amazon RDS para bases de datos.
- Docker y Docker Compose: Permiten la creación de contenedores para mantener tus aplicaciones aisladas y organizadas.
- Nginx: Servidor web para manejar el tráfico HTTP hacia tu sitio.
- Certbot (Let’s Encrypt): Herramienta para obtener y renovar certificados SSL de manera gratuita.
Paso 1: Compra de Dominio
Primero, necesitas un dominio. Puedes comprarlo en proveedores como:
- Route53 (de AWS): Integrado directamente con AWS.
- Namecheap: Ofrece precios accesibles y buenos servicios de soporte.
- GoDaddy: Muy conocido, con buenas herramientas de administración.
Una vez que tienes el dominio, podrás conectarlo a tu servidor para que tu página sea accesible desde internet.
Paso 2: Configuración del Servidor en AWS
- Crea una instancia EC2 (Amazon Linux 2):
- Entra a tu cuenta de AWS y ve a EC2.
- Elige una instancia Amazon Linux 2 (optimizada para Amazon).
- Para mantener los costos bajos, selecciona un t3.micro. Si estás en el nivel gratuito de AWS, no tendrás costo adicional por los primeros seis meses.
- Configura la Seguridad:
- En el grupo de seguridad, permite el acceso a los puertos:
- 80 (HTTP) y 443 (HTTPS) para tráfico web.
- 22 para SSH, necesario para acceder y configurar el servidor.
- En el grupo de seguridad, permite el acceso a los puertos:
Paso 3: Instalación de Docker y Docker Compose
Una vez que hayas accedido a tu servidor vía SSH, instala Docker y Docker Compose:
bashCopiar códigosudo yum update -y sudo amazon-linux-extras install docker sudo service docker start sudo usermod -aG docker ec2-user sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose
¿Por Qué Usar Docker y Docker Compose?
Ventajas:
- Aislamiento: Docker permite ejecutar aplicaciones en contenedores, evitando conflictos entre dependencias.
- Escalabilidad: Puedes añadir contenedores según crezca el tráfico de tu web.
- Facilidad de Configuración: Docker Compose facilita el despliegue y administración de múltiples servicios a través de un solo archivo de configuración.
Paso 4: Preparación del Archivo Docker Compose
Vamos a crear un archivo docker-compose.yml que configurará los servicios necesarios: Nginx, Certbot, y WordPress.
yamlCopiar códigoversion: '3' services: nginx: image: nginx:latest ports: - "80:80" - "443:443" volumes: - ./nginx.conf:/etc/nginx/conf.d/default.conf depends_on: - wordpress networks: - webnet wordpress: image: wordpress:latest environment: WORDPRESS_DB_HOST: your-db-endpoint WORDPRESS_DB_USER: your-db-username WORDPRESS_DB_PASSWORD: your-db-password WORDPRESS_DB_NAME: your-db-name networks: - webnet certbot: image: certbot/certbot volumes: - ./letsencrypt:/etc/letsencrypt - ./nginx.conf:/etc/nginx/conf.d/default.conf command: certonly --webroot -w /var/www/certbot -d your-domain.com networks: webnet:
Paso 5: Configuración de la Base de Datos MySQL en AWS RDS
- Crea una Base de Datos en Amazon RDS:
- Selecciona MySQL y una instancia de tipo db.t3.micro.
- Configura las credenciales y el nombre de la base de datos.
- Asegúrate de habilitar el acceso externo desde tu instancia EC2.
- Conecta WordPress a la Base de Datos:
- En el archivo docker-compose.yml, coloca los valores correctos para WORDPRESS_DB_HOST, WORDPRESS_DB_USER, WORDPRESS_DB_PASSWORD, y WORDPRESS_DB_NAME.
Paso 6: Despliegue de los Servicios
Ejecuta los siguientes comandos para lanzar los contenedores:
bashCopiar códigodocker-compose up -d
Paso 7: Verificación de Puertos y Monitoreo
Para asegurarte de que los servicios están funcionando, usa:
bashCopiar códigodocker ps
Esto te mostrará los contenedores activos y los puertos. Revisa que nginx esté en los puertos 80 y 443, y que wordpress esté activo.
Paso 8: Configuración del Archivo de Configuración Nginx
Configura el archivo nginx.conf para que Nginx utilice tu dominio:
nginxCopiar códigoserver { listen 80; server_name your-domain.com; location / { proxy_pass http://wordpress:80; } }
Paso 9: Redirección de Dominio a tu Servidor
Dirígete a tu proveedor de dominio y redirecciona el dominio hacia la dirección IP pública de tu instancia EC2. Esto permitirá que cualquier persona que ingrese tu dominio llegue a tu servidor en AWS.
Paso 10: Certificado SSL con Certbot
Finalmente, ejecuta el comando para obtener el certificado SSL gratuito de Let’s Encrypt y asegurar tu sitio:
bashCopiar códigodocker-compose run certbot certonly --webroot -w /var/www/certbot -d your-domain.com
Una vez que Certbot termine, modifica el archivo de configuración de Nginx para utilizar SSL.
Capa Gruita de AWS dura 1 año
Mi Cliente tiene 5 meses con wordpress y bases de datos mysql en AWS
Aqui se puede observar que en el menu de Administracion de facturacion y costos / Analisis de Costo / Nivel Grauito , el cliente desde de 5 meses de uso solo ha consumido 25.73% de Amazon Elastic Compute Cloud (30GB) y el 96.27% de Amazon Relational Databases Services.
AWS Explorador de Costos de AWS 2.07$ / Mensual.
Mi Cliente tiene 5 meses con wordpress y bases de datos mysql en AWS
En el menu de Administracion de facturacion y costos / Explorador de Costos, el cliente solo ha pagado un total de 14.50$ en los 5 meses desde Mayo hasta Octubre 31 de 2024. En un promedio de 2.07$ mensual. Lo mas alto que pago fueron 2.99$ Mensual.
Bases de datos mysql en AWS db.t3.micro
Bases de datos mysql en AWS db.t3.micro
Conclusión
Al final de estos pasos, tendrás un sitio web en WordPress completamente funcional, seguro y escalable. AWS, Docker y Nginx forman un poderoso stack que ofrece estabilidad, rendimiento y flexibilidad para cualquier proyecto web.
Cómo Crear una Página Web Wordpress Economica 2.68$ Mensual