1 Descripción general del trabajo

Se desarrollará una breve aplicación web en WordPress. Para soportarla, se hará uso de 2 servicios brindados por la plataforma para Cloud Computing, Amazon Web Services (AWS). Los servicios que se consumirán son:

1.1 EC2 (Elastic Compute Cloud)

Amazon EC2 proporciona capacidad de cómputo escalable en la nube. En este proyecto, se utilizó para lanzar una instancia de servidor virtual basada en Amazon Linux. En dicha instancia se instalaron:

Apache como servidor web.

PHP como lenguaje de programación para el backend de WordPress.

WordPress como sistema de gestión de contenidos (CMS) para desplegar el sitio web.

La instancia EC2 sirve como entorno de ejecución del sitio web, manejando las peticiones HTTP entrantes y entregando el contenido dinámico al usuario final.

1.2 RDS (Relational Database Service)

Amazon RDS permite configurar, operar y escalar una base de datos relacional en la nube de forma sencilla y eficiente. En este ejercicio, se utilizó MariaDB como motor de base de datos.

RDS gestiona el almacenamiento de datos del sitio WordPress, como configuraciones, entradas de blog, usuarios y comentarios, asegurando disponibilidad, seguridad y backups integrados. Se utilizó una configuración Multi-AZ para asegurar alta disponibilidad de la base de datos y el servicio se puede configurar de acuerdo a las necesidades del usuario.

2 Lanzamiento de Instancia EC2

Una vez se habilita el entorno de prueba se procede a ingresar.

Dentro del entorno de prueba de AWS, se busca y se selecciona el servicio EC2.

El proceso de lanzamiento de la instancia EC2 consiste en configurar la instancia de acuerdo a la necesidad del usuario. Se elige el sistema operativo que se va a usar, en este caso se usó Amazon Linux, se elige la cantidad de memoria de la RAM, el tipo de procesador a usar, la memoria en disco de la instancia y otras características que se pueden aplicar. Para lanzar la instancia EC2 se hace click en el recuadro amarillo “Launch instances”.

Una vez se sitúa en el panel para el lanzamiento de instancias, se empieza la configuración. Se asigna un nombre para la instancia (servidor) y un sistema operativo, en este caso, se utilizó Amazon Linux.

Se asigna el par de llavez “vockey” y se crea el grupo de seguridad, el cual asigna permisos para permitir el tráfico por los puertos SSH y el puerto 80 para comunicaciones HTTP necesarias para la página.

En “Advanced Details” se pueden configurar otras opciones, como protección contra parada y protección contra finalización, estas son medidas de seguridad interesantes que se pueden habilitar para una instancia EC2 que requiera estar funcionando siempre y para la cual se desee una capa extra de seguridad, en este caso no se usará ya que es únicamente una prueba.

Adicionalmente, se hizo uso de la consola de UserData en el panel de configuración de la instancia EC2 para instalar de una vez Apache e inicializarlo, instalar PHP como lenguaje para el soporte del backend, e instalar WordPress y copiar los archivos extraídos al directorio raíz de Apache.Una vez insertado el código en la consola o cargado el Script desde la computadora, se procede a dar click en el recuadro amarillo llamado “Launch instance”.

2.1 Configuración vía UserData

#!/bin/bash

# Actualizar los paquetes del sistema
yum update -y

# ----------------------------------------
# INSTALACIÓN Y CONFIGURACIÓN DE APACHE
# ----------------------------------------

# Instalar el servidor web Apache
yum install -y httpd

# Iniciar el servicio de Apache inmediatamente
systemctl start httpd

# Habilitar Apache para que se inicie automáticamente con el sistema
systemctl enable httpd

# ----------------------------------------
# INSTALACIÓN DE PHP Y EXTENSIONES
# ----------------------------------------

# Habilitar PHP 7.4 desde los extras de Amazon Linux
yum install php -y

# Instalar PHP y la extensión mysqlnd para conectar con bases de datos MySQL/MariaDB
yum install -y php-mysqlnd

# ----------------------------------------
# DESCARGA E INSTALACIÓN DE WORDPRESS
# ----------------------------------------

# Ir al directorio temporal
cd /tmp

# Descargar la última versión de WordPress
wget https://wordpress.org/latest.tar.gz

# Extraer el archivo descargado
tar -xzvf latest.tar.gz

# Copiar los archivos extraídos al directorio raíz de Apache
cp -r wordpress/* /var/www/html/

# ----------------------------------------
# PERMISOS Y PROPIEDADES DE ARCHIVOS
# ----------------------------------------

# Cambiar la propiedad de los archivos a Apache (usuario y grupo)
chown -R apache:apache /var/www/html/

# Asignar permisos de lectura y ejecución al contenido
chmod -R 755 /var/www/html/

# ----------------------------------------
# REINICIO DEL SERVICIO Y MENSAJE FINAL
# ----------------------------------------

# Reiniciar Apache para aplicar los cambios
systemctl restart httpd

# Imprimir mensaje de éxito en la terminal/log
echo "Instalación de Apache, PHP y WordPress completada con exito"

Una vez lanzada la instancia, en unos minutos se debe ver el panel de instancias con la instancia lanzada y en ejecución.

Para corroborar que se hayan instalado con éxito los procesos programados en UserData se procede a generar la conexión a la instancia EC2 creada mediante SSH y desde la consola de mi PC (CMD en Windows).

Una vez en la consola y situado en la carpeta Downloads donde tengo el archivo labsuser.pem brindado por el laboratorio para seguridad mediante conexión SSH, procedo a ejecutar el siguiente comando:


# ssh -i "labsuser.pem" ec2-user@34.228.254.254 

# donde 34.228.254.254 es la dirección IPv4 pública de la instancia EC2

y se le dice “yes”.

Se confirma la instalación del servidor Apache ejecutando la instrucción:


sudo systemctl status httpd 

Se puede apreciar que el estado actual del servidor Apache es Running, o sea, que se instaló con éxito.

Para verificar de otra manera la instalación de Apache se puede poner en el buscador la IP pública de la instancia mediante HTTP, no mediante HTTPS, y si todo se instaló con éxito debe verse de la siguiente manera:

Para probar la integración de PHP con Apache se crea un archivo de prueba de información en el documentRoot con:

echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php
Y se verifica mediante la dirección: 
# http://54.208.42.157/info.php

Una vez ejecutado el comando con la IP pública de la instancia, debería verse en el buscador lo siguiente:

Para verificar la correcta instalación de Apache, PHP y WordPress se pueden visualizar los logs de instalación con el siguiente comando:

sudo cat /var/log/cloud-init-output.log

3 Lanzamiento del servicio RDS

Para la creación del motor de base de datos y de la base de datos se ocupará la instancia RDS. En el buscador de la consola de AWS se debe buscar RDS y se elige el servicio Aurora and RDS.

Se procede a dar click en el enlace Subnet groups (grupos de subredes, y en el recuadro amarillo Create Database Subnet Group

En la configuración del grupo de la subred se elige usar la VPC por defecto y se deben elegir al menos 2 zonas de disponiblidad, así solo se vaya a hacer uso de una.

Una vez creado el Subnet Group se procede a crear la instancia RDS se da click en Databases y en Create database.

Una vez dentro del panel de configuración de RDS se elige MariaDB como motor para la base de datos.

Se selecciona el template Developing and Testing y se le otorga un nombre a la instancia (database-2).

Se debe configurar un usuario y una contraseña segura para el manejo de la instancia.

Usuario: admin2 Contraseña: AXE0EP6ysXMfM3PgkaNxumoPifCFCk!

NOTA: SE PONEN EL USUARIO Y LA CONTRASEÑA EN ESTE DOCUMENTO COMO EJEMPLO. RECUERDE, LAS CONTRASEÑAS NUNCA SE DEBEN DISPONER EN DOCUMENTOS PÚBLICOS O QUE PUEDAN SER VULNERADOS.

Se asigna la clase de la instancia RDS, para este caso db.t3.micro y se configura el almacenamiento, asignando SSD de uso general (GP2) con 20 GiB. En este caso NO SE HABILITA el autoscaling, el cual permite a la base de datos aumentar su capacidad de almacenamiento conforme se requiera.

Se asigna la instancia RDS a la instancia EC2 creada anteriormente.

Se asigna el grupo de subred creado antes de crear la instancia RDS.

Se asigna la VPC por defecto a la instancia RDS y se da click al final en el recuadro amarillo Create database. La instancia provee más opciones de configuración, las cuales pueden ser fácilmente utilizadas de acuerdo a los propósitos particulares.

Se puede apreciar que la instancia database-2 se ha creado de manera exitosa.

4 Configuración de una IP Elastica

Se procede a configurar la IP elástica, la cual consiste en una IP de IPv4 pública estática, que no cambie aunque se apague la instancia EC2. En la instancia EC2, se selecciona Elastic IP addresses:

Para esta prueba ya se tenía una IP Elástica configurada de un ejercicio anterior. En el caso de crear una nueva, solo se debe dar click en el recuadro amarillo llamado Assign Elastic IP Address.

En este caso, se selecciona la dirección IP elástica creada previamente y en Actions se da click en “Asociar IP”, se elige la instancia y la dirección IP privada que se desea utilizar.

Se da click en el recuadro amarillo “Associate” y ya se tiene vinculada la IP elastica a la instancia EC2 creada.

A continuación, se verificará la conexión de la instancia EC2 con RDS:

  1. Se inicia la instancia EC2 desde la consola del PC con la nueva IP Elastica. Como esta IP estuvo asignada previamente a otra instancia EC2, se debe eliminar la huella digital (fingerprint) de la IP ya que estuvo asociada a otra instancia EC2 y por ende SSH lanzará un error.

  1. Se ejecuta el comando para instalar el cliente MariaDB que permite conexiones con RDS.
sudo yum install -y mariadb105

Se procede a verificar la conexión de la instancia EC2 con la base de datos admin:

mysql -h database-2.c23isbqo09it.us-east-1.rds.amazonaws.com -u admin2 -p

# Donde, database-2.c23isbqo09it.us-east-1.rds.amazonaws.com es el punto de enlace de la instancia RDS. 

Una vez ejecutada la instrucción e introducida la contraseña, se visualiza el siguiente mensaje:

5 Creación base de datos y configuración WordPress

Una vez dentro del cliente de MariaDB, se procede a crear la base de datos para Wordpress y se le otorgan permisos, además del usuario y la contraseña Instrucciones de sql:

CREATE DATABASE wordpress;

CREATE USER 'wp_user'@'%' IDENTIFIED BY 'wp_pass2025!';

GRANT ALL PRIVILEGES ON wordpress.* TO 'wp_user'@'%';

FLUSH PRIVILEGES;

Se comprueba de que cada una de las instrucciones se ejecutó de manera correcta:

Una vez creada la base de datos, se procede a abrir el instalador de Wordpress desde el navegador con la siguiente instrucción:

# http://3.223.210.139/wp-admin/setup-config.php

Obteniendo esta visual y eligiendo en este caso Español de Colombia:

Dando click en continuar, se tiene el siguiente panel:

Se procede a introducir los datos de la base de datos creada para Wordpress y el punto de enlace de la instancia RDS:

Se da click en Enviar y se espera el mensaje de confirmación:

Se procede con el proceso de instalación y se insertan los datos solicitados:

NOTA: Para efectos prácticos se usó la misma contraseña que se le asignó a la instancia RDS, únicamente para efectos prácticos.

Instalado de manera satisfactoria.

Ya se puede ingresar directamente a la interfaz de WordPress:

Una vez en este panel, nos disponemos a crear una aplicación web de muestra, para ello se hará:

  1. Insertar los datos.

  2. Crear un archivo PHP personalizado o plugin.

  3. Agregarlo a WordPress para que genere el gráfico.

  4. Crear la tabla en RDS:

Se procede a ingresar a la base de datos wp_user alojada en la instancia RDS con el comando:

mysql -h database-2.c23isbqo09it.us-east-1.rds.amazonaws.com -u wp_user -p

Una vez dentro del motor MariaDB, se crea una tabla con los promedios mensuales del año 2024 de 4 variables ambientales:


USE wordpress;

-- Crear tabla para almacenar variables ambientales mensuales
CREATE TABLE variables_ambientales (
  id INT AUTO_INCREMENT PRIMARY KEY,
  mes VARCHAR(20),
  temperatura_promedio FLOAT,
  viento_promedio FLOAT,
  presion_promedio FLOAT,
  radiacion_promedio FLOAT
);

-- Insertar datos para cada mes de 2024 (valores simulados)
INSERT INTO variables_ambientales (mes, temperatura_promedio, viento_promedio, presion_promedio, radiacion_promedio) VALUES
('Enero', 22.3, 3.1, 1012.3, 4.6),
('Febrero', 23.0, 3.4, 1011.9, 5.2),
('Marzo', 24.5, 3.9, 1011.1, 6.8),
('Abril', 25.8, 4.3, 1010.6, 7.5),
('Mayo', 26.4, 4.1, 1010.3, 7.9),
('Junio', 25.7, 3.6, 1011.0, 6.3),
('Julio', 24.9, 3.2, 1012.1, 5.4),
('Agosto', 24.6, 3.5, 1012.5, 5.7),
('Septiembre', 24.8, 3.9, 1011.8, 6.1),
('Octubre', 24.0, 3.7, 1012.2, 5.6),
('Noviembre', 23.1, 3.3, 1012.7, 5.0),
('Diciembre', 22.5, 3.0, 1013.0, 4.8);

Se puede observar que se ingresó al motor MariaDB, se utilizó la base de datos wordpress y alí se creó la nueva tabla para nuestra DB.

Se procede a instalar desde WordPress - Plugins, el plugin WP Data Access.

Una vez instalado el Plugin se procede a crear una nueva página web, la cual tras insertar la información necesaria luce de la siguiente manera:

Una de las ventajas considerables de diseñar aplicaciones Web con WordPress es la versatilidad de esta plataforma, pues se puede diseñar una página con templates pre-establecidos, así como instroduciendo código HTML, CSS, JavaScript, para obtener los resultados deseados. En este ejemplo se construyó la página con un breve código de HTML que permitió los resultados deseados.

Cualquier apreciación puede ser comunicada al correo