Aplicación web: Implementación EC2

aplicación web

Implementación de una aplicación web NodeJS con AWS EC2

En este artículo aprenderá cómo puede configurar una instancia EC2 utilizando una aplicación web NodeJS.


Visión general

Amazon EC2 es uno de los servicios más comunes que se ha utilizado para ejecutar aplicaciones a través de la nube. Este servicio funciona como IaaS (Infraestructura como Servicio), lo que significa que como usuario, no debemos preocuparnos por la “capa física” de los servidores donde alojamos nuestras aplicaciones.

Además, Amazon nos ofrece un espacio interactivo donde podemos configurar algunas características de los servidores como:

  • Sistema operativo
  • RAM, CPU
  • Tipo de almacenamiento (EBS/EFS o EC2 Instance Store)
  • Grupos de seguridad: funciona como firewall (además del servicio WAF)

En este artículo, vamos a aprovechar este servicio para implementar una aplicación NodeJS usando git, npm y pm2.

Creación de una instancia EC2

Vamos a crear una instancia EC2 con los siguientes pasos. Considere que esta instancia es simple solo para fines de prueba:

1) Seleccionar instancias de lanzamiento

2) Establezca un nombre, seleccione un tipo de instancia (en este caso, una instancia de Amazon Linux)

3) Para este caso, permitir conexiones HTTP/HTTPS.

4) Instancia de lanzamiento

Por si acaso:

Por cierto, si lo desea, puede lanzar una instancia basada en una AMI (Amazon Machine Image) de servidor web NodeJS disponible en AMI Marketplace.

aplicación web

Grupos de seguridad

Es muy importante saber cómo usar los grupos de seguridad según la arquitectura de la solución que definió al principio.

Para fines de implementación, esta es una regla básica de entrada/salida:

aplicación web

Para un entorno de producción, debe establecer las reglas correctas en función de los servicios que se conectarán con EC2 y los aspectos de seguridad que desea tener. Esto debe estar alineado con su arquitectura.

Configuraciones de EC2

Acceda al EC2. Sugiero usar la función EC2-Connect para administrar fácilmente el servidor.

aplicación web

Recuerde usar el usuario root para privilegios altos.

Instalando Git

sudo yum install git -y

Instalando NodeJs

# Installing NVM
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash

# Activating NVM
. ~/.nvm/nvm.sh

# Installing NodeJS (in this case: version 16.15.1)
nvm install 16.15.1

# Verifying node version
node -e "console.log('Running Node.js ' + process.version)"

Instalación de PM2

npm install pm2@latest -g

Creando una carpeta donde vamos a almacenar la aplicación

cd /var
mkdir www
cd www
mkdir html
cd html

Repositorio de clonación

Solía ​​usar para la autenticación en mis repositorios mediante token de acceso. Si está familiarizado con esto, lo necesitará.

Si tiene GitHub, vaya a Configuración / Configuración de desarrollador / Token de acceso personal (elija el clásico).

A continuación, clonemos el repositorio.

git clone https://[email protected]/luismirandad27/your-nodejs-project-repo.git

Por si acaso (otra vez):

Antes de clonar su repositorio, si elimina la regla de entrada/salida con el protocolo HTTPS, ¡la clonación no funcionará!

Recuerda que clonar un repositorio es usar este protocolo.

Acceso al repositorio

cd /var/www/html/your-nodejs-project-repo

Si necesita establecer algunas variables de entorno, puede hacerlo con este comando (este es un ejemplo)

export NODE_ENV=production

Usando pm2, ejecuta tu aplicación

pm2 start app.js

aplicación web

Para verificar si su aplicación se está ejecutando, use esto

# to check the jobs
pm2 list

# to check your logs
pm2 logs

aplicación web

Un consejo: si el grupo de seguridad de su EC2 recibe solicitudes entrantes de un Load Balancer o de algo, por ejemplo, el puerto 80, su aplicación web NodeJS debe escuchar desde ese puerto.

Verifique su aplicación

En la información de su instancia, verifique la dirección IPv4 pública y utilícela en un navegador como este

http://IPv4_Address:Port

Conclusiones

Vio cómo puede configurar una instancia EC2 utilizando una aplicación web NodeJS. Recuerde que si necesita hacer que este proceso sea escalable y de alta disponibilidad, su servicio deberá ser compatible con otros servicios como ALB, ASG, una VPC bien definida, etc. Podemos hablar de ellos más tarde 🙂

¡FELIZ APRENDIZAJE!


Gracias por llegar hasta aquí, si encuentras esto útil no olvides aplaudir 👍🏼suscribirse para recibir más contenido.

Si le interesa, puede echar un vistazo a algunos de los otros artículos que he escrito recientemente sobre AWS y Laravel:

Recent Post