- Remove OCR noise, credits, and duplicates from rules-database.json (288→255 rules) - Add clean_rules.py script for rule cleanup - Add CLAUDE.md, docs/, and update README with documentation links Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
189 lines
2.7 KiB
Markdown
189 lines
2.7 KiB
Markdown
# PM2 Configuration
|
|
|
|
This document explains how to use PM2 for managing Deathwatch Roller in production.
|
|
|
|
## What is PM2?
|
|
|
|
PM2 is a production process manager for Node.js that keeps your application running 24/7.
|
|
|
|
## Installation
|
|
|
|
```bash
|
|
# Install PM2 globally
|
|
npm install -g pm2
|
|
|
|
# Initialize PM2 ecosystem file
|
|
pm2 init
|
|
```
|
|
|
|
## Application Configuration
|
|
|
|
Create `ecosystem.config.js`:
|
|
|
|
```javascript
|
|
module.exports = {
|
|
apps: [
|
|
{
|
|
name: 'dwroller-frontend',
|
|
cwd: './frontend',
|
|
script: 'npm',
|
|
args: 'start',
|
|
env: {
|
|
NODE_ENV: 'production',
|
|
PORT: 3000
|
|
},
|
|
env_development: {
|
|
NODE_ENV: 'development'
|
|
},
|
|
instances: 1,
|
|
autorestart: true,
|
|
max_memory_restart: '500M'
|
|
},
|
|
{
|
|
name: 'dwroller-backend',
|
|
cwd: './backend',
|
|
script: 'npm',
|
|
args: 'start',
|
|
env: {
|
|
NODE_ENV: 'production',
|
|
PORT: 5000
|
|
},
|
|
env_development: {
|
|
NODE_ENV: 'development'
|
|
},
|
|
instances: 1,
|
|
autorestart: true,
|
|
max_memory_restart: '500M'
|
|
}
|
|
]
|
|
};
|
|
```
|
|
|
|
## Starting the Application
|
|
|
|
```bash
|
|
# Start both apps
|
|
pm2 start ecosystem.config.js
|
|
|
|
# Start only backend
|
|
pm2 start ecosystem.config.js --only backend
|
|
|
|
# Start only frontend
|
|
pm2 start ecosystem.config.js --only frontend
|
|
```
|
|
|
|
## Managing Apps
|
|
|
|
```bash
|
|
# View status
|
|
pm2 list
|
|
|
|
# View logs
|
|
pm2 logs
|
|
|
|
# Restart app
|
|
pm2 restart all
|
|
|
|
# Stop app
|
|
pm2 stop all
|
|
|
|
# Delete app
|
|
pm2 delete all
|
|
```
|
|
|
|
## Monitoring
|
|
|
|
```bash
|
|
# Enable monitoring
|
|
pm2 monitortype --interval 10000
|
|
|
|
# View stats
|
|
pm2 stats
|
|
```
|
|
|
|
## Logging
|
|
|
|
```bash
|
|
# Rotate logs
|
|
pm2 rotate logs
|
|
|
|
# Save log
|
|
pm2 save
|
|
|
|
# Load saved PM2 process list
|
|
pm2 startup
|
|
pm2 save
|
|
```
|
|
|
|
## NPM Scripts
|
|
|
|
Update `package.json` with PM2 scripts:
|
|
|
|
```json
|
|
{
|
|
"scripts": {
|
|
"start": "npm run build && pm2 start ecosystem.config.js",
|
|
"pm2:start": "pm2 start ecosystem.config.js",
|
|
"pm2:stop": "pm2 stop all",
|
|
"pm2:restart": "pm2 restart all",
|
|
"pm2:logs": "pm2 logs",
|
|
"pm2:list": "pm2 list",
|
|
"pm2:save": "pm2 save",
|
|
"pm2:startup": "pm2 startup"
|
|
}
|
|
}
|
|
```
|
|
|
|
## Production Build
|
|
|
|
```bash
|
|
# Build frontend
|
|
cd frontend
|
|
npm run build
|
|
|
|
# Start with PM2
|
|
cd ../..
|
|
npm run pm2:start
|
|
```
|
|
|
|
## Environment Variables
|
|
|
|
Store secrets in `.env` or use PM2 env:
|
|
|
|
```bash
|
|
# Set environment variable
|
|
pm2 set ecosystem.config.js:* env:SESSION_SECRET="your-secret"
|
|
|
|
# List all env variables
|
|
pm2 env ecosystem.config.js
|
|
```
|
|
|
|
## Backup Strategy
|
|
|
|
```bash
|
|
# Create database backup
|
|
npm run backup
|
|
|
|
# Schedule backup with cron
|
|
0 2 * * * /path/to/db/backup.sh
|
|
```
|
|
|
|
## Scaling
|
|
|
|
For horizontal scaling, configure multiple instances:
|
|
|
|
```javascript
|
|
{
|
|
instances: 'max',
|
|
exec_mode: 'cluster',
|
|
watch: false
|
|
}
|
|
```
|
|
|
|
## Auto-restart on reboot
|
|
|
|
```bash
|
|
pm2 startup
|
|
pm2 save
|
|
```
|