Ticker

6/recent/ticker-posts

Despliegue de un sitio web como PHP y MySQL en AWS

En este tutorial, se diseña la arquitectura base haciendo uso de los servicios necesarios de Amazon Web Services (AWS) para el despliegue de un sitio web desarrollo en PHP, Bootstrap 5, MySQL y Conexión PDOEl tutorial también detalla la estructura del proyecto desarrollado en PHP y las principales tablas de la base de datos en MySQL.

Tras completar el tutorial, habrá desplegado un sitio web sobre una subred pública y una privada; asimismo, habrá configurado las instancias del sitio web y base de datos, también, usará herramientas para el despliegue del código fuente.


1. Arquitectura base para el despliegue:

La arquitectura base para el despliegue en AWS estará basada sobre una configuración fundamental, permitiendo desplegar y gestionar el sitio web de manera eficiente. Como buena práctica se recomienda desplegar sobre una arquitectura en capas que nos permite aplicar separaciones de responsabilidades con la finalidad de facilitar el mantenimiento y la evolución de la aplicación, si te interesa saber más sobre arquitectura en capas puedes revisar Cómo diseñar una arquitectura en capas en AWS.


2. Servicios y componentes AWS:

  1. Virtual Private Cloud (VPC).
  2. Elastic Load Balancer (ELB).
  3. Security Groups.
  4. Elastic Compute Cloud (EC2).
  5. Amazon RDS (MySQL)


3. Estrucutra del sitio web y base de dato.

xyz

4. Creación y configuración Servicios AWS

1. Crear y configurar el Servicio Virtual Private Cloud (VPC)

Crea la Virtual Private Cloud (VPC) o también conocido como Red Virtual Privada; asimismo, crear las Subredes, Internet Gateway, Route Tables y NAT Gateway para aprovisionar la conexion de la arquitectura en capas.

1.1. Crear la Virtual Private Cloud (VPC) asignando el nombre de vpc-website-hp (principal) con un bloque CIDR de 10.0.0.0/16.

1.2. Crear el Internet Gateway de nombre de igw-website-hp, seguidamente asociar a la VPC principal vpc-website-hp

El igw-website-hp permite la comunicación entre las instancias EC2 de la VPC principal y la comunicación con Internet.

1.3. Crear las sub-nets (subredes) públicas y privadas en la misma Availability Zone (zona de disponibilidad): 

SubredCIDRZona dedisponibilidad
public-subnet-za10.0.1.0/24us-east-1a
public-subnet-zb10.0.2.0/24us-east-1b
private-subnet-za10.0.3.0/24us-east-1a
private-subnet-zb10.0.4.0/24us-east-1b

A las subnets privadas sólo se podrán acceder a través de una NAT Gateway.
Sólo la subred privada de nombre private-subnet-za accedará a Internet.

1.4. Crear los route tables (tablas de ruteo) privada de nombre rtb-private-website-hp y pública de nombre rtb-public-website-hp.

Seguidamente asocia las subredes privadas (private-subnet-za y private-subnet-zb) a la tabla de ruteo privada rtb-private-website-hp, asimismo, asocia las subredes pública (public-subnet-za y public-subnet-zb) a la tabla de ruteo pública rtb-public-website-hp.

Finalmente, enrutar el tráfico a Internet a través de la puerta de enlace de Internet Gateway de nombre de igw-website-hp para nuestra tabla de ruteo pública rtb-public-website-hp.

1.5. Crear el NAT Gateway de tipo pública con la finalidad de que las instancias Elastic Compute Cloud (EC2) de la subred privada accedan a Internet.

Seguidamente, editar la tabla de ruteo privada rtb-private-website-hp para utilizar (asignar) la puerta de enlace NAT para acceder a Internet.

En el siguiente diagrama preliminar se visualiza los servicios y componentes que aprovisiona la Virtual Private Cloud (VPC).


2. Crear y configurar el Servicio Elastic Load Balancer (ELB)

Para controlar el tráfico de la arquitectura en capas se crearán 2 Elastic Load Balancer (balaceadores de carga).

2.1. Crear el primer balaceadores de carga de tipo aplicación de nombre abl-internet-website-hp para el Front-End que se conectará con la puerta de enlace (Internet Gateway igw-website-hp).

Seleccionar Internet-facing para la comunicación con Internet, seguidamente en Network seleccionar las sud redes publicas public-subnet-za y public-subnet-zb.

2.2. Crear el segundo balaceadores de carga INTERNO de nombre abl-internal-website-hp para el Front-Back de carga interna.

Seleccionar Internal para la comunicación con Interno, seguidamente en Network seleccionar las sud redes privadas private-subnet-za private-subnet-zb.

2.3. Configurar los grupos de seguridad teniendo en cuenta los puertos que necesitará el sitio web. 

Crear el grupo de nombre sg-internet-website-hp y habilitamos los puertos HTTP 80 y HTTPS 443 para la comunicación desde Internet.

Crear el grupo de nombre sg-internal-website-hp y habilitamos el puerto 3000 para la comunicación interna.

Definir el target group (grupo objetivo) de nombre tg-website.hp para establecer el tipo de instancias con soporte a balanceador de carga.

En el siguiente diagrama se visualiza los servicios y componentes que se aprovisiona a la Virtual Private Cloud (VPC) y al Elastic Load Balancer (ELB) con las configuraciones necesarias.


3. Crear y configurar el Elastic Compute Cloud (EC2)

Crea las intancias para el Front-End y Back-End del sitio web; asimismo, asignar las instancias al Auto Scaling Group según corresponda.

3.1. Crear o lanzar la primera instancia de Elastic Compute Cloud (EC2). Para esto se necesita crear la plantilla de lanzamiento de nombre ec2-internet-website-hp.

3.2. Crear o lanzar la segunda instancia de Elastic Compute Cloud (EC2). Para esto se necesita crear la plantilla de lanzamiento de nombre ec2-internal-website-hp.

3.3. Crear el Auto Scaling Group y configurar las políticas de escalado cuándo:

La CPU de la instancia ec2-internet-website-hp sea mayor o igual al 80% se debe agrega una nueva instancia, reducir la escala cuando la CPU de la instancia ec2-internet-website-hp sea menor o igual al 50%.

La CPU de la instancia ec2-internal-website-hp sea mayor o igual al 80% se debe agrega una nueva instancia, reducir la escala cuando la CPU de la instancia ec2-internal-website-hp sea menor o igual al 50%.

4. Crear y configurar Amazon RDS (MySQL)

Crea la base de datos de tipo MySQL y el bastion host (opcional) para acceder mediante SSH a las instancias EC2 de la subred privada.

4.1. Crear la base de datos del tipo de motor MySQL y asigna a la subred privada de nombre private-subnet-za, y selecciona el grupo sg-internet-website-hp.

4.2. Crear el bastion host para acceder mediante SSH a las instancias EC2 de la subred privada.


5. Herramientas de despliegue:

Este tutorial, contempla 3 principales herramientas para el despliegue del sitio web, como comandos linux,  MobaXterm y MySQL Workbench.

  • Comandos Linux: Programa o utilitario que se ejecuta en la línea de comandos; una línea de comandos es una interfaz que acepta líneas de texto y las procesa en forma de instrucciones para tu ordenador. Este tutorial, contempla los siguientes comandos que serán ejecutados desde MobaXterm:
    • sudo apt update
    • sudo apt install apache2
    • sudo systemctl status apache2
    • sudo systemctl start apache2
    • sudo systemctl enable apache2
    • sudo apt install ca-certificates apt-transport-https software-properties-common
    • sudo add-apt-repository ppa:ondrej/php
    • sudo apt install php8.0 libapache2-mod-php8.0
    • sudo systemctl restart apache2
    • php -v
    • sudo apt install php8.0-fpm libapache2-mod-fcgid
    • sudo a2enmod proxy_fcgi setenvif
    • sudo a2enconf php8.0-fpm
    • sudo apt-get install php8.0-mysql
  • MySQL Workbench: Herramienta de diseño de base de datos visual integrada que facilita la administración y el desarrollo de bases de datos MySQL. Utilizará para la conexión a la instancia RDS para crear la base de datos y manipulación datos.
  • MobaXterm: Herramienta para la administración de sistemas y redes, especialmente diseñada para programadores, webmasters y administradores de TI. Ofrece una amplia gama de funciones en una sola aplicación para Windows, facilitando el manejo de trabajos remotos. Utilizará para la conexión a la instancia EC2 para el despliegue del código fuente.

6. Enrutamiento:

DestinoObjetivoDetalle
10.0.0.0/16LocalConexión local AWS
10.0.1.0/24igw-website-hpConexión pública con salida a Intenet
10.0.2.0/24igw-website-hpConexión pública con salida a Intenet
10.0.3.0/24igw-website-hp, rtb-private-website-hpConexión privada con salida a Intenet
10.0.4.0/24rtb-public-website-hpConexión privada sin salida a Intenet


7. Conclusiones:

xyz

8. Referencia:


 E n  E d i c i ó n 

Publicar un comentario

0 Comentarios