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.
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:
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.
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
Para verificar si su aplicación se está ejecutando, use esto
# to check the jobs pm2 list # to check your logs pm2 logs
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: