You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
5.4 KiB
5.4 KiB
查价中台 — 服务器部署指南
将本项目整个目录上传到 Linux 服务器后,按下列步骤操作。
一、服务器要求
| 项 | 建议 |
|---|---|
| 系统 | Ubuntu 22.04 / Debian 12 |
| CPU | 2 核+ |
| 内存 | 4GB+(RPA 浏览器占内存) |
| 磁盘 | 20GB+ |
| 软件 | Docker 24+、Docker Compose V2 |
| 网络 | 可访问 www.mothership.com |
# 安装 Docker(如未安装)
curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker "$USER"
# 重新登录后生效
二、上传与配置(人工填写)
cd /opt/chajia # 你的项目目录
# 1. 复制环境变量模板
cp deploy/.env.production.example .env
# 2. 编辑 .env — 必须修改以下项(搜索 CHANGE_ME):
nano .env
必须人工填写的项
| 变量 | 说明 |
|---|---|
MYSQL_ROOT_PASSWORD |
数据库强密码 |
JWT_SECRET |
随机密钥,例:openssl rand -base64 32 |
PUBLIC_DOMAIN |
对外域名,如 quote.yourcompany.com |
HOST_SERVICE_TOKENS |
给外部系统的 API Token(JSON 单行) |
CUSTOMER_REGISTRY |
客户 ID,与 token 中 customerId 一致 |
MOTHERSHIP_EMAIL / MOTHERSHIP_PASSWORD |
仅当 Mothership 要求登录时填写 |
可选修改
| 变量 | 说明 |
|---|---|
APP_PORT |
默认 3000,仅本机监听 |
RPA_SELECTOR_* |
Mothership 页面改版时需更新 |
三、一键部署
chmod +x deploy/install.sh
bash deploy/install.sh
脚本将自动:构建镜像 → 启动 MySQL/Redis/Web/Worker/Scheduler → 数据库迁移 → 种子数据。
配置 Nginx 反代(对外提供 HTTPS API)
仅 HTTP(内网或临时测试):
# 先改 deploy/nginx/chajia.http.conf 里的 server_name,或设置 .env 的 PUBLIC_DOMAIN
bash deploy/install.sh --nginx-http
HTTPS(生产推荐):
# 1. 安装 nginx、certbot
sudo apt install -y nginx certbot python3-certbot-nginx
# 2. 先 HTTP 部署拿到证书
bash deploy/install.sh --nginx-http
sudo certbot certonly --nginx -d quote.yourcompany.com
# 3. 切换 HTTPS 配置(install 会按 PUBLIC_DOMAIN 替换域名)
bash deploy/install.sh --nginx-ssl
或手动复制并修改:
deploy/nginx/chajia.http.conf→/etc/nginx/sites-available/chajiadeploy/nginx/chajia.ssl.conf→ 有证书后使用
四、部署后检查清单(人工)
docker compose -f deploy/docker-compose.yml ps五个服务均为Upcurl -I http://127.0.0.1:3000返回 200/307- 浏览器打开
https://你的域名/admin/alerts能进管理端 - 修改默认管理员密码(seed 默认:
admin_demo/Demo@123) - 用外部 Token 调
POST /api/addresses/mothership-candidates返回code: 0 - 完整询价:
POST /api/quotes→ 轮询GET /api/quotes/{id}得到 4 档报价 - 防火墙:只开放 80/443,不要暴露 3306/6379/3000
五、给外部系统的调用说明
Base URL: https://你的域名
请求头:
Authorization: Bearer <HOST_SERVICE_TOKENS 里的 token>
X-Customer-Id: CUST_001
Content-Type: application/json
流程:
POST /api/addresses/mothership-candidates— 地址联想POST /api/quotes— 提交询价GET /api/quotes/{quote_id}— 每 2 秒轮询,最长约 30 秒
详细字段见 docs/查价系统-PRD.md 第 4、5 章,或 deploy/API.md。
第三方完整对接文档: deploy/第三方对接指南.md(含自测脚本 scripts/test-host-api.ps1 / .sh)。
六、常用运维命令
# 查看日志
docker compose -f deploy/docker-compose.yml logs -f next-app
docker compose -f deploy/docker-compose.yml logs -f rpa-worker
# 重启
docker compose -f deploy/docker-compose.yml restart
# 停止
docker compose -f deploy/docker-compose.yml down
# 更新代码后重新部署
git pull
bash deploy/install.sh
七、目录说明
deploy/
├── .env.production.example # 生产环境变量模板 → 复制为项目根 .env
├── docker-compose.yml # 生产 Compose(MySQL/Redis 不对外暴露)
├── install.sh # 一键部署脚本
├── nginx/
│ ├── chajia.http.conf # HTTP 反代
│ └── chajia.ssl.conf # HTTPS 反代
└── README.md # 本文件
八、故障排查
| 现象 | 处理 |
|---|---|
询价一直 processing |
查 rpa-worker 日志;确认 RPA_MOCK_MODE=false 且 Worker 在运行 |
| 地址联想 503 | Worker 未就绪或 Mothership 不可达 |
| RPA 登录失败 | 填写 MOTHERSHIP_EMAIL/PASSWORD;或检查 .rpa 卷内 storageState |
| 迁移失败 | docker compose -f deploy/docker-compose.yml run --rm rpa-worker npx prisma migrate deploy |
九、安全提醒
- 勿将
.env提交到 Git - 每个外部系统使用独立 Service Token
- 生产环境
RPA_MOCK_MODE必须为false - 定期备份
mysql_data卷:docker volume inspect chajia-prod_mysql_data
十、使用宝塔 / 已有 MySQL(不用 Docker 内置库)
若数据库已在宝塔创建(库名 chajia,字符集 utf8mb4):
- 上传并导入
deploy/database/chajia.sql(或chajia.sql.gz) - 详见
deploy/database/README.md - 在
.env设置DATABASE_URL指向宝塔 MySQL,并调整 compose 去掉mysql服务或勿启动它