使用 PM2 进行本地开发和生产部署的完整指南。
npm install -g pm2./pm2.sh start就这么简单!前后端将自动启动。
# 启动服务
./pm2.sh start
# 停止服务
./pm2.sh stop
# 重启服务
./pm2.sh restart
# 查看状态
./pm2.sh status
# 删除服务
./pm2.sh delete# 查看所有日志(实时)
./pm2.sh logs
# 只看后端日志
./pm2.sh logs backend
# 只看前端日志
./pm2.sh logs frontend# 编译后端
./pm2.sh build
# 重新编译后端并重启
./pm2.sh rebuild# 打开 PM2 监控面板(实时CPU/内存)
./pm2.sh monitor启动成功后:
- 前端 Web 界面: http://localhost:3000
- 后端 API: http://localhost:8080
- 健康检查: http://localhost:8080/api/health
PM2 配置文件,定义了前后端的启动参数:
const path = require('path');
module.exports = {
apps: [
{
name: 'nofx-backend',
script: './nofx', // Go 二进制文件
cwd: __dirname, // 动态获取当前目录
autorestart: true,
max_memory_restart: '500M'
},
{
name: 'nofx-frontend',
script: 'npm',
args: 'run dev', // Vite 开发服务器
cwd: path.join(__dirname, 'web'), // 动态拼接路径
autorestart: true,
max_memory_restart: '300M'
}
]
};修改配置后需要重启:
./pm2.sh restart- 后端日志:
./logs/backend-error.log和./logs/backend-out.log - 前端日志:
./web/logs/frontend-error.log和./web/logs/frontend-out.log
设置 PM2 开机自启动:
# 1. 启动服务
./pm2.sh start
# 2. 保存当前进程列表
pm2 save
# 3. 生成启动脚本
pm2 startup
# 4. 按照提示执行命令(需要 sudo)取消开机自启动:
pm2 unstartup后端修改:
./pm2.sh rebuild # 自动编译并重启前端修改:
./pm2.sh restart # Vite 会自动热重载,无需重启./pm2.sh monitorpm2 info nofx-backend # 后端详情
pm2 info nofx-frontend # 前端详情pm2 flush# 1. 查看详细错误
./pm2.sh logs
# 2. 检查端口占用
lsof -i :8080 # 后端端口
lsof -i :3000 # 前端端口
# 3. 手动编译测试
go build -o nofx
./nofx# ~~检查 config.json 是否存在~~
# ~~ls -l config.json~~
# 检查数据库文件是否存在
ls -l trading.db
# 检查权限
chmod +x nofx
# 手动运行看报错
./nofx# 检查 node_modules
cd web && npm install
# 手动启动测试
npm run dev修改 pm2.config.js:
{
name: 'nofx-frontend',
script: 'npm',
args: 'run preview', // 改为 preview(需先 npm run build)
env: {
NODE_ENV: 'production'
}
}{
name: 'nofx-backend',
script: './nofx',
instances: 2, // 启动 2 个实例
exec_mode: 'cluster'
}{
autorestart: true,
max_restarts: 10,
min_uptime: '10s',
max_memory_restart: '500M'
}| 特性 | PM2 部署 | Docker 部署 |
|---|---|---|
| 启动速度 | ⚡ 快 | 🐌 较慢 |
| 资源占用 | 💚 低 | 🟡 中等 |
| 隔离性 | 🟡 中等 | 💚 高 |
| 适用场景 | 开发/单机 | 生产/集群 |
| 配置复杂度 | 💚 简单 | 🟡 中等 |
建议:
- 开发环境: 使用
./pm2.sh - 生产环境: 使用
./start.sh(Docker)
./pm2.sh help或查看 PM2 官方文档:https://pm2.keymetrics.io/
MIT