Ejecuta wordpress sin Esfuerzo en Amazon AWS EC2

Iniciar un nuevo sitio nunca ha sido tan fácil, gracias a plataformas como WordPress. En esta guía, te guiaremos en el despliegue de WordPress en AWS utilizando EC2 y Docker. Al final, tendrás un sitio de WordPress funcionando sin problemas en una infraestructura AWS confiable.

Prerrequisito: Estoy usando Debian en mi máquina host.

1. Configurando Tu Instancia EC2:

  • Iniciar: Dirígete al panel de EC2 y haz clic en “Launch Instance”.
  • Nombrar Tu Instancia: Digamos, ‘wordpress’.
  • Elegir Tipo de Instancia: Recomiendo t3.small después de algunas pruebas. ¡Es ideal para principiantes!
  • Par de Claves: Crea uno nuevo y guarda el archivo CSV. Lo necesitaremos para el acceso SSH más tarde.
  • Configuración de Red: Elige tu VPC. Si tienes una subred privada configurada, selecciónala.
  • Firewall: Permite el tráfico SSH y HTTP desde cualquier lugar. Para otros ajustes, los valores predeterminados deberían funcionar bien.

2. Instalando Docker y Docker Compose:

Primero, asegúrate de que los permisos de tu archivo PEM estén configurados correctamente:

$ chmod 400 <miArchivoPem>

Accede por SSH a tu nueva instancia EC2:

$ ssh -i "<miArchivoPem>.pem" ec2-user@<IPpublicaODNS>

Actualiza los paquetes, instala Docker y agrega al ec2-user al grupo Docker:

$ sudo yum update
$ sudo yum install docker
$ sudo usermod -a -G docker ec2-user

Para Docker Compose:

$ sudo yum install python3-pip
$ sudo pip3 install docker-compose

Habilita Docker al iniciar:

$ systemctl enable docker.service
$ systemctl start docker.service

Verifica las instalaciones:

$ docker version
$ docker-compose version

3. Desplegando WordPress:

Crea un directorio para el proyecto:

mkdir miSitioWordpress

Dentro del directorio, configura tu archivo docker-compose.

version: '3.1'
services:
  wordpress:
    image: wordpress
    restart: always
    ports:
      - 80:80
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: exampleuser
      WORDPRESS_DB_PASSWORD: examplepass
      WORDPRESS_DB_NAME: exampledb
    volumes:
      - wordpress:/var/www/html
  db:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_DATABASE: exampledb
      MYSQL_USER: exampleuser
      MYSQL_PASSWORD: examplepass
      MYSQL_RANDOM_ROOT_PASSWORD: '1'
    volumes:
      - db:/var/lib/mysql

volumes:
  wordpress:
  db:

Luego, inicia tus servicios:

docker-compose up -d

Visita http://tu-dns-ec2-o-ip-publica y sigue la configuración de WordPress.

4. Crea un ACM:

Para servir nuestro sitio correctamente en 443, necesitaremos crear un certificado, podemos hacerlo en AWS utilizando el servicio ACM

  • Navega a ACM > Certificados.
  • Haz clic en el botón “Solicitar”.
  • Tipo de certificado: certificado público.
  • Para el nombre de dominio completamente calificado, añade tu dominio, por ejemplo: misitio.com
  • Puedes dejar otras opciones como predeterminadas.
  • Haz clic en el botón de crear certificado.
  • Luego, como siguiente paso, puedes seleccionar nuevamente tu certificado y hacer clic en “Crear registros en Route 53”. Esto creará automáticamente registros de validación en r53.

5. Crea un grupo objetivo:

Necesitamos crear un grupo objetivo que se dirija al nuevo servicio que se ejecuta en la instancia que creamos anteriormente. Para esto navegamos a la Consola EC2 > Grupos Objetivo:

  • Haz clic en el botón “Crear grupo objetivo”.
  • Selecciona como tipo de objetivo “instancias”.
  • Añade un nombre al grupo objetivo, por ejemplo: MiSitioTG
  • Deja el protocolo en HTTP por defecto: Puerto 80
  • Haz clic en siguiente Aquí verás un panel donde seleccionarás la instancia de tu sitio. Incluye tu instancia en el puerto 80 y haz clic en el botón “Crear grupo objetivo”.

6. Crea un balanceador de carga:

Ahora podemos proceder a la creación de ALB, para esto ve a EC2 > balanceadores de Carga.

  • Haz clic en el botón “Crear nuevo balanceador de carga”.
  • Luego selecciona el tipo “Balanceador de Carga de Aplicaciones”.
  • Selecciona un nombre para tu equilibrador de carga, por ejemplo, MiSitioLB
  • Esquema: De cara a Internet
  • Mapeo de red: asegúrate de seleccionar la ZA correcta donde está ejecutándose tu instancia.
  • En el grupo de seguridad, asegúrate de seleccionar un grupo que esté abierto en el puerto HTTPS 443 y HTTP 80.
  • Oyentes y enrutamiento: Selecciona Protocolo HTTP, PUERTO 80. Y reenvía a: MiSitioTG (El grupo objetivo que acabamos de crear en la sección anterior).
  • Oyentes y enrutamiento: Selecciona Protocolo HTTPS, PUERTO 443. Y reenvía a: MiSitioTG (El grupo objetivo que acabamos de crear en la sección anterior). Selecciona el certificado que previamente creamos que cubre tu sitio.
  • Haz clic en “Crear equilibrador de carga”.

7. Crea un registro A en Route 53:

Para esto, suponemos que ya tienes una zona alojada para tu sitio y tienes un dominio.

  • Ve a Route 53 > Zonas Alojadas > tusitio.com
  • Haz clic en crear nuevo registro, luego elige “Enrutamiento Simple”.
  • Elige el tipo de registro A
  • En el campo Valor/Ruta de tráfico: busca el equilibrador de carga que creamos anteriormente.

Ahora, al acceder a tu dominio deberías ver tu sitio de WordPress.

¿Necesitas una solución de comercio electrónico a medida? En la Agencia Innoquanta,