Files
2026-05-28 21:47:42 +08:00

4.4 KiB
Raw Permalink Blame History

部署文档

代码仓库:https://git.bz121.com/dekun/crypto-pre-trade-system.git

本文档说明如何在 Ubuntu 服务器上使用 PM2 守护进程部署本系统。


部署环境要求

项目 要求
操作系统 Ubuntu 20.04 / 22.04 / 24.04
运行用户 root
安装路径 /opt/crypto-pre-trade-system
进程守护 PM2
Python 3.10+(虚拟环境)
Node.js 18+(仅构建前端时使用)
访问端口 1125

一键部署(推荐)

root 用户登录服务器,执行:

# 首次部署:克隆仓库并运行安装脚本
git clone https://git.bz121.com/dekun/crypto-pre-trade-system.git /opt/crypto-pre-trade-system
cd /opt/crypto-pre-trade-system
bash deploy/install.sh

脚本会自动完成:

  1. 安装系统依赖(git、python3、nodejs、pm2
  2. 创建 Python 虚拟环境并安装后端依赖
  3. 构建前端静态资源
  4. 通过 PM2 启动服务并设置开机自启
  5. 执行健康检查

部署完成后访问:http://<服务器IP>:1125


更新部署

代码有更新时,在服务器上重新执行安装脚本即可:

cd /opt/crypto-pre-trade-system
bash deploy/install.sh

脚本会自动 git pull、重新构建前端、重启 PM2 进程。


手动部署步骤

若需手动逐步部署,按以下步骤操作:

1. 克隆仓库

git clone https://git.bz121.com/dekun/crypto-pre-trade-system.git /opt/crypto-pre-trade-system
cd /opt/crypto-pre-trade-system

2. 安装系统依赖

apt-get update
apt-get install -y git python3 python3-venv python3-pip curl

# Node.js 20
curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
apt-get install -y nodejs

# PM2
npm install -g pm2

3. 后端虚拟环境

cd /opt/crypto-pre-trade-system/backend
python3 -m venv venv
venv/bin/pip install -r requirements.txt
mkdir -p data

4. 构建前端

cd /opt/crypto-pre-trade-system/frontend
npm install
npm run build

5. PM2 启动

cd /opt/crypto-pre-trade-system
mkdir -p logs
pm2 start ecosystem.config.cjs
pm2 save
pm2 startup systemd -u root --hp /root

PM2 常用命令

pm2 status                      # 查看进程状态
pm2 logs crypto-pre-trade       # 查看实时日志
pm2 restart crypto-pre-trade    # 重启服务
pm2 stop crypto-pre-trade       # 停止服务
pm2 delete crypto-pre-trade     # 删除进程

日志文件位置:

  • 标准输出:/opt/crypto-pre-trade-system/logs/pm2-out.log
  • 错误输出:/opt/crypto-pre-trade-system/logs/pm2-error.log

架构说明

生产环境采用 单进程单端口 模式:

PM2 → uvicorn (0.0.0.0:1125)
        ├── /api/*     → FastAPI 后端接口
        └── /*         → Vue3 前端静态资源(frontend/dist
  • 前端构建产物由 FastAPI 直接托管,无需额外 Nginx
  • SQLite 数据库文件:/opt/crypto-pre-trade-system/backend/data/pretrade.db
  • 重启服务不丢失数据

防火墙

若服务器开启了防火墙,需放行 1125 端口:

# ufw
ufw allow 1125/tcp

# firewalld
firewall-cmd --permanent --add-port=1125/tcp
firewall-cmd --reload

重置数据库

pm2 stop crypto-pre-trade
rm /opt/crypto-pre-trade-system/backend/data/pretrade.db
pm2 start crypto-pre-trade

重启后系统自动重建表结构并写入默认数据。


故障排查

现象 排查方式
$'\r': command not found Windows 换行符问题,执行 sed -i 's/\r$//' deploy/install.sh 后重试
无法访问 pm2 status 确认进程 onlinecurl http://127.0.0.1:1125/api/health
502 / 连接拒绝 检查防火墙是否放行 1125 端口
前端白屏 确认 frontend/dist 存在;重新 npm run build
API 报错 pm2 logs crypto-pre-trade --lines 50
数据库问题 检查 backend/data/ 目录权限

本地开发 vs 生产部署

本地开发 生产部署
后端 uvicorn --reload --port 8000 PM2 + uvicorn :1125
前端 npm run dev :1125(代理到 8000 npm run build,由 FastAPI 托管
访问 http://localhost:1125 http://<服务器IP>:1125

本地开发说明见 README.md