Configuración PM2 para proyecto
Esta es la estructura básica ideal que podría servirte para tu archivo de config, según se pueda dar el caso (tipo de proyecto, podrían darse algunos cambios mínimos que debas hacer)
Habitualmente, el archivo se llamará
ecosystem.config.jspero según detalles de tupackage.json, este podría necesitar cambiar la extensión a.mjso.cjs
js
// Si quieres utilizar valores que ya existen en tu package.json
import { version, name } from './package.json';
// Por si tengas +1 servicio en el proyecto, para parametrizar facilmente varios ajustes
const baseConfig = {
// cualquier archivo/carpeta que se modifique hará que se reinicie
watch: true,
// salvo los listados aquí
ignore_watch : [
"./data/*"
"./logs/*",
"node_modules/"
],
// en caso de crashear/detenerse, levantarse automáticamente
autorestart: true,
// en caso de crasheos reiterados en corto tiempo,
// limite antes de detener el auto restart
max_restarts: 10,
// el formato del timestamp para logs
log_date_format: "YYYY-MM-DD HH:mm",
// ruta dentro para logs de error (console.warn)
error_file: "./logs/errors.log",
// ruta dentro para logs de info (console.info)
out_file: "./logs/out.log",
};
module.exports = {
apps : [
{
// forma estática del nombre
name: "[proyecto] api",
// forma estática de definir la versión
version: "1.0",
// ruta del archivo a levantar
script: "./api.js",
// reiniciar este servicio a las 00:00 todos los días
cron_restart: "0 0 * * *",
...baseConfig
},
{
// forma dinámica del nombre (concat de detalle del package.json)
name: `[${name}] cronjobs`,
// forma dinámica de definir la versión
version: version,
script: "./crons.js",
...baseConfig
},
// agrega mas arrays según los scripts que necesites estén activos
]
};