2025-11-11 13:46:33 -03:00
|
|
|
module.exports = {
|
|
|
|
|
apps: [
|
2025-11-11 15:48:44 -03:00
|
|
|
// 🟢 --- PRIMEIRA APLICAÇÃO: API PRINCIPAL (servidor HTTP) ---
|
2025-11-11 13:46:33 -03:00
|
|
|
{
|
2025-11-11 15:48:44 -03:00
|
|
|
name: "hubxglpi-api", // Nome que aparecerá no PM2
|
|
|
|
|
script: "src/server.js", // Caminho do arquivo principal da API
|
|
|
|
|
|
|
|
|
|
// 👇 Execução em modo "cluster" (um processo por core da máquina)
|
|
|
|
|
exec_mode: "cluster",
|
|
|
|
|
instances: "max", // "max" = usa todos os núcleos disponíveis
|
|
|
|
|
|
|
|
|
|
// ⚙️ Variáveis de ambiente padrão (modo development)
|
|
|
|
|
env: {
|
2025-12-01 11:39:04 -03:00
|
|
|
watch: true,
|
2025-11-11 15:48:44 -03:00
|
|
|
NODE_ENV: "development",
|
|
|
|
|
PORT: 3000 // Porta usada no ambiente de desenvolvimento
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// ⚙️ Variáveis de ambiente quando rodar com `--env production`
|
|
|
|
|
env_production: {
|
2025-12-01 11:39:04 -03:00
|
|
|
watch: false,
|
2025-11-11 15:48:44 -03:00
|
|
|
NODE_ENV: "production",
|
|
|
|
|
PORT: 8080 // Porta usada no ambiente de produção
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// 🕒 --- SEGUNDA APLICAÇÃO: CRON JOBS (tarefas agendadas) ---
|
|
|
|
|
{
|
|
|
|
|
name: "hubxglpi-cron", // Nome do serviço de crons
|
|
|
|
|
script: "src/cron.js", // Arquivo onde ficam as tarefas agendadas
|
|
|
|
|
|
|
|
|
|
// 👇 Modo "fork" = apenas 1 instância, sem cluster (evita rodar crons duplicados)
|
|
|
|
|
exec_mode: "fork",
|
|
|
|
|
instances: 1, // Força a rodar somente um processo
|
|
|
|
|
|
|
|
|
|
// ⚙️ Variáveis de ambiente para desenvolvimento
|
2025-11-11 13:46:33 -03:00
|
|
|
env: {
|
2025-12-01 11:39:04 -03:00
|
|
|
watch: true,
|
2025-11-11 13:46:33 -03:00
|
|
|
NODE_ENV: "development"
|
|
|
|
|
},
|
2025-11-11 15:48:44 -03:00
|
|
|
|
|
|
|
|
// ⚙️ Variáveis de ambiente para produção
|
2025-11-11 13:46:33 -03:00
|
|
|
env_production: {
|
2025-12-01 11:39:04 -03:00
|
|
|
watch: false,
|
2025-11-11 13:46:33 -03:00
|
|
|
NODE_ENV: "production"
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
};
|
|
|
|
|
|
2025-11-11 15:48:44 -03:00
|
|
|
|
|
|
|
|
/** * @module server
|
|
|
|
|
* @description Ponto de entrada principal da aplicação.
|
|
|
|
|
* Este módulo é responsável por:
|
|
|
|
|
* Definir a configuração do PM2 para gerenciar a aplicação principal e o serviço de cron jobs.
|
|
|
|
|
* 1. A aplicação principal (`hubxglpi-api`) roda em modo cluster para lidar com requisições HTTP. Para encerrar chamados.
|
|
|
|
|
* 2. O serviço de cron jobs (`hubxglpi-cron`) roda em modo fork para evitar execuções duplicadas das tarefas agendadas.
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 💡 Dicas de uso:
|
|
|
|
|
*
|
|
|
|
|
* 🧪 Ambiente de desenvolvimento:
|
|
|
|
|
* pm2 start ecosystem.config.js --env development
|
|
|
|
|
*
|
|
|
|
|
* 🚀 Ambiente de produção:
|
|
|
|
|
* pm2 start ecosystem.config.js --env production
|
|
|
|
|
* pm2 startup systemd
|
|
|
|
|
* sudo env PATH=$PATH:/usr/bin /usr/local/lib/node_modules/pm2/bin/pm2 startup systemd -u desenvolvimento --hp /home/desenvolvimento
|
|
|
|
|
* pm2 save
|
|
|
|
|
*
|
|
|
|
|
* ✅ Após isso, o PM2 inicializa automaticamente os dois processos no boot do servidor.
|
|
|
|
|
*/
|