/** * PM2 Ecosystem Configuration * * This file configures PM2 to run the Next.js application in cluster mode * for better performance and reliability. * * Usage: * pm2 start ecosystem.config.js * pm2 save * pm2 startup */ module.exports = { apps: [{ name: 'moyos-wedding-app', script: 'npm', args: 'start', // Cluster mode for load distribution instances: 2, exec_mode: 'cluster', // Environment variables env: { NODE_ENV: 'production', PORT: 3000, }, // Logging error_file: './logs/err.log', out_file: './logs/out.log', log_date_format: 'YYYY-MM-DD HH:mm:ss Z', merge_logs: true, time: true, // Resource limits max_memory_restart: '2G', // Auto-restart configuration autorestart: true, watch: false, max_restarts: 10, min_uptime: '10s', restart_delay: 4000, // Graceful shutdown kill_timeout: 5000, wait_ready: true, listen_timeout: 10000, // Advanced options instance_var: 'INSTANCE_ID', // Health check (if using PM2 Plus/Monitoring) // pmx: true, }], // Deployment configuration (optional) deploy: { production: { user: 'deploy', host: 'your-server.com', ref: 'origin/main', repo: 'git@github.com:your-org/moyos-wedding-app.git', path: '/opt/moyos-wedding-app', 'post-deploy': 'npm ci && npm run build && pm2 reload ecosystem.config.js --env production', 'pre-setup': 'apt-get update && apt-get install -y git', }, staging: { user: 'deploy', host: 'staging-server.com', ref: 'origin/develop', repo: 'git@github.com:your-org/moyos-wedding-app.git', path: '/opt/moyos-wedding-app-staging', 'post-deploy': 'npm ci && npm run build && pm2 reload ecosystem.config.js --env staging', }, }, };