# NoFX Trading Bot - PM2 部署指南 使用 PM2 进行本地开发和生产部署的完整指南。 ## 🚀 快速开始 ### 1. 安装 PM2 ```bash npm install -g pm2 ``` ### 2. 一键启动 ```bash ./pm2.sh start ``` 就这么简单!前后端将自动启动。 --- ## 📋 所有命令 ### 服务管理 ```bash # 启动服务 ./pm2.sh start # 停止服务 ./pm2.sh stop # 重启服务 ./pm2.sh restart # 查看状态 ./pm2.sh status # 删除服务 ./pm2.sh delete ``` ### 日志查看 ```bash # 查看所有日志(实时) ./pm2.sh logs # 只看后端日志 ./pm2.sh logs backend # 只看前端日志 ./pm2.sh logs frontend ``` ### 构建与编译 ```bash # 编译后端 ./pm2.sh build # 重新编译后端并重启 ./pm2.sh rebuild ``` ### 监控 ```bash # 打开 PM2 监控面板(实时CPU/内存) ./pm2.sh monitor ``` --- ## 📊 访问地址 启动成功后: - **前端 Web 界面**: http://localhost:3000 - **后端 API**: http://localhost:8080 - **健康检查**: http://localhost:8080/api/health --- ## 🔧 配置文件 ### pm2.config.js PM2 配置文件,定义了前后端的启动参数: ```javascript 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' } ] }; ``` **修改配置后需要重启:** ```bash ./pm2.sh restart ``` --- ## 📝 日志文件位置 - **后端日志**: `./logs/backend-error.log` 和 `./logs/backend-out.log` - **前端日志**: `./web/logs/frontend-error.log` 和 `./web/logs/frontend-out.log` --- ## 🔄 开机自启动 设置 PM2 开机自启动: ```bash # 1. 启动服务 ./pm2.sh start # 2. 保存当前进程列表 pm2 save # 3. 生成启动脚本 pm2 startup # 4. 按照提示执行命令(需要 sudo) ``` **取消开机自启动:** ```bash pm2 unstartup ``` --- ## 🛠️ 常见操作 ### 修改代码后重启 **后端修改:** ```bash ./pm2.sh rebuild # 自动编译并重启 ``` **前端修改:** ```bash ./pm2.sh restart # Vite 会自动热重载,无需重启 ``` ### 查看实时资源占用 ```bash ./pm2.sh monitor ``` ### 查看详细信息 ```bash pm2 info nofx-backend # 后端详情 pm2 info nofx-frontend # 前端详情 ``` ### 清空日志 ```bash pm2 flush ``` --- ## 🐛 故障排查 ### 服务启动失败 ```bash # 1. 查看详细错误 ./pm2.sh logs # 2. 检查端口占用 lsof -i :8080 # 后端端口 lsof -i :3000 # 前端端口 # 3. 手动编译测试 go build -o nofx ./nofx ``` ### 后端无法启动 ```bash # ~~检查 config.json 是否存在~~ # ~~ls -l config.json~~ # 检查数据库文件是否存在 ls -l trading.db # 检查权限 chmod +x nofx # 手动运行看报错 ./nofx ``` ### 前端无法访问 ```bash # 检查 node_modules cd web && npm install # 手动启动测试 npm run dev ``` --- ## 🎯 生产环境建议 ### 1. 使用生产模式 修改 `pm2.config.js`: ```javascript { name: 'nofx-frontend', script: 'npm', args: 'run preview', // 改为 preview(需先 npm run build) env: { NODE_ENV: 'production' } } ``` ### 2. 增加实例数(负载均衡) ```javascript { name: 'nofx-backend', script: './nofx', instances: 2, // 启动 2 个实例 exec_mode: 'cluster' } ``` ### 3. 自动重启策略 ```javascript { autorestart: true, max_restarts: 10, min_uptime: '10s', max_memory_restart: '500M' } ``` --- ## 📦 与 Docker 部署的对比 | 特性 | PM2 部署 | Docker 部署 | |------|---------|------------| | 启动速度 | ⚡ 快 | 🐌 较慢 | | 资源占用 | 💚 低 | 🟡 中等 | | 隔离性 | 🟡 中等 | 💚 高 | | 适用场景 | 开发/单机 | 生产/集群 | | 配置复杂度 | 💚 简单 | 🟡 中等 | **建议:** - **开发环境**: 使用 `./pm2.sh` - **生产环境**: 使用 `./start.sh` (Docker) --- ## 🆘 获取帮助 ```bash ./pm2.sh help ``` 或查看 PM2 官方文档:https://pm2.keymetrics.io/ --- ## 📄 License MIT