Skip to main content
Version: Next

Manual de Despliegue

Índice

  1. Requisitos Previos
  2. Estructura del Proyecto
  3. Entornos de Despliegue
  4. Despliegue del Backend (EC2 + PM2)
  5. Variables de Entorno
  6. Mantenimiento y Monitoreo
  7. Anexos

Requisitos Previos

  • Cuenta en AWS con acceso a EC2, API Gateway, S3 y Amplify.
  • Llaves SSH configuradas para acceso al EC2.
  • Node.js y PM2 instalados en la instancia.
  • Git configurado en el EC2.
  • Permisos de IAM para despliegue en Amplify.

Estructura del Proyecto

Repositorios

  • Frontend: [Frontend-Text-Lines] — desplegado en AWS Amplify.
  • Backend: [Backend-textiles] — desplegado en una instancia EC2 usando PM2.

Entornos de Despliegue

Una vez configurada el API gateway y Amplify, se podran obtener los URL's de cada ambiente

EntornoURL BackendURL FrontendRama GitHubPuerto en EC2
Staginghttps://hh92xpz0ph.execute-api.us-east-1.amazonaws.com/https://staging.d22le927zllwnv.amplifyapp.com/staging4000
Producciónhttps://aydrmntif4.execute-api.us-east-1.amazonaws.com/https://main.d22le927zllwnv.amplifyapp.com/main3000

Despliegue del Backend (EC2 + PM2)

1. Clonar o actualizar el repositorio

Para poder tener dos entornos reales de produccion y staging debemos clonar el repositorio 2 veces con el nombre staging y production

Una vez clonados debemos pasarnos a las ramas respectivas para cada directorio

cd staging # o production
git checkout staging # o production
git pull # solo necesario la primera vez

2. Instalar dependencias

npm install

3. Definir variables de entorno

Crea un archivo .env.staging y .env.production en el root del proyecto (ver sección Variables de Entorno).

4. Crear archivos de ecosistema para staging y produccion

Archivo de ecosistema para produccion y staging

// ecosystem-production.config.js
module.exports = {
apps: [
{
name: "app-production",
script: "./app.js",
instances: "max",
exec_mode: "cluster",
watch: false,
env: {
NODE_ENV: "production",
PORT: 3000,
},
},
],
};
// ecosystem-staging.config.js
module.exports = {
apps: [
{
name: "app-staging",
script: "./app.js",
instances: "max",
exec_mode: "cluster",
watch: false,
env: {
NODE_ENV: "staging",
PORT: 4000,
},
},
],
};

5. Ejecutar o reiniciar procesos con PM2

pm2 start ecosystem-staging.config.js # o ecosystem-production.config.js
# o si ya está corriendo
pm2 reload ecosystem.config.js # o ecosystem-production.config.js

Para no tener que hacer estos pasos manualmente, usaremos un script de github actions que se puede encontrar en el apartado CI / CD de la estrategia tecnica


Variables de Entorno

Backend (.env)

Estructura de los .env


AWS_REGION =...
AWS_BUCKET_NAME = ...

AWS_ACCESS_KEY_ID=...
AWS_SECRET_ACCESS_KEY=...

LOCAL_URL =...
LOCAL_URL_BACKEND =...
DEPLOYED_URL = ...
API_GATEWAY_URL =...

NODE_ENV=staging
JWT_SECRET=...
API_KEY = ...
PORT = 4000

DB_HOST=...
DB_PORT=...
DB_USER=...
DB_PASSWORD=...
DB_NAME=...

Frontend (Amplify)

Estas se configuran desde la consola de Amplify:

VITE_API_URL=...
VITE_API_KEY=...

Mantenimiento y Monitoreo

PM2

Ver todos los procesos:

pm2 ls

Ver logs en vivo:

Esto sirve para saber si la aplicacion se desplego correctamente.

pm2 logs

Este es un mensaje de ejemplo cuando esta corriendo correctamente.

/home/ubuntu/.pm2/logs/app-production-out-0.log last 15 lines:
0|app-prod | Server running on port 3000 3000 in production mode.
0|app-prod | Server running on port 3000 3000 in production mode.
0|app-prod | Server running on port 3000 3000 in production mode.
0|app-prod | Server running on port 3000 3000 in production mode.
0|app-prod | Server running on port 3000 3000 in production mode.
0|app-prod | Server corriendo en puerto: 3000 3000 en ambiente de production.
0|app-prod | Server corriendo en puerto: 3000 3000 en ambiente de production.

/home/ubuntu/.pm2/logs/app-staging-out-1.log last 15 lines:
1|app-stag | Server running on port 4000 4000 in staging mode.
1|app-stag | Server running on port 4000 4000 in staging mode.
1|app-stag | Server running on port 4000 4000 in staging mode.
1|app-stag | Server running on port 4000 4000 in staging mode.
1|app-stag | Server running on port 4000 4000 in staging mode.
1|app-stag | Server corriendo en puerto: 4000 4000 en ambiente de staging.
1|app-stag | Server corriendo en puerto: 4000 4000 en ambiente de staging.
1|app-stag | Server corriendo en puerto: 4000 4000 en ambiente de staging.

Reiniciar proceso:

pm2 restart <id|nombre>

Detener proceso:

pm2 stop <id|nombre>

Amplify

  • Ver estado de builds y logs desde la consola de Amplify.
  • Re-desplegar manualmente si es necesario.

Anexos

  • Documentación de endpoints: ver Swagger accediendo al URL del backend + /api-docs.

Historial

Tipo de VersiónDescripciónFechaColaborador
1.0Crear manual de despliegue13/05/2025Diego Alfaro
2.0Actualizacion de estrategia de despliegue14/05/2025Diego Alfaro