9.2 KiB
9.2 KiB
域名部署配置文档
使用宝塔面板部署? 请直接参考 deploy/宝塔部署指南.md,本文档为详细配置说明。
域名规划
| 域名 | 用途 | 说明 |
|---|---|---|
dda.gaowenbu.cn |
管理员端 (web-admin) | Vue 3 前端 + API 反向代理 |
ddy.gaowenbu.cn |
业务员端 (web-sales) | Vue 3 前端 + API 反向代理 |
| 后端服务 | FastAPI API 服务 | 监听 127.0.0.1:8000,由 Nginx 代理 |
架构说明
用户浏览器
├── dda.gaowenbu.cn ──→ Nginx ──→ web-admin/dist (静态文件)
│ │
│ └──→ /api/* ──→ FastAPI (127.0.0.1:8000)
│
└── ddy.gaowenbu.cn ──→ Nginx ──→ web-sales/dist (静态文件)
│
└──→ /api/* ──→ FastAPI (127.0.0.1:8000)
微信小程序 ──→ dda.gaowenbu.cn/api/* ──→ Nginx ──→ FastAPI
一、已修改的配置文件
1.1 后端 backend/.env(已修改)
| 配置项 | 开发环境值 | 生产环境值 | 说明 |
|---|---|---|---|
APP_ENV |
dev |
prod |
✅ 已改为 prod |
BASE_URL |
(无) | https://dda.gaowenbu.cn |
✅ 新增,用于生成文件绝对 URL |
CORS_ALLOW_ORIGINS |
http://localhost:5173,http://localhost:5174 |
https://dda.gaowenbu.cn,https://ddy.gaowenbu.cn |
✅ 已改为生产域名 |
AUTH_TOKEN_STORE_PATH |
D:/tmp/... (Windows) |
/tmp/order-flow-auth/revoked_tokens.json |
✅ 已改为 Linux 路径 |
LOCAL_UPLOAD_DIR |
(无) | /tmp/order-flow-oss/local-uploads |
✅ 新增,Linux 路径 |
1.2 后端 backend/app/core/config.py(已修改)
新增两个配置字段:
base_url: str— 后端公网访问地址,别名BASE_URLlocal_upload_dir: str— 本地上传目录,别名LOCAL_UPLOAD_DIR
1.3 后端 backend/app/main.py(已修改)
本地上传目录从硬编码 D:/tmp/... 改为从 settings.local_upload_dir 读取。
1.4 后端 backend/app/api/files.py(已修改)
文件上传返回的 URL 从硬编码 http://127.0.0.1:8000/uploads/... 改为从 settings.base_url 读取。
1.5 前端 frontend/web-admin/.env(新建)
VITE_API_BASE_URL=https://dda.gaowenbu.cn
VITE_ENABLE_DEMO_FALLBACK=false
1.6 前端 frontend/web-sales/.env(新建)
VITE_API_BASE_URL=https://ddy.gaowenbu.cn
VITE_ENABLE_DEMO_FALLBACK=false
1.7 前端 Vue 组件(已修改 4 个文件)
以下文件从硬编码 http://127.0.0.1:8000 改为导入 config.js 的 apiBaseUrl:
| 文件 | 原始写法 | 修改后 |
|---|---|---|
web-admin/src/views/DriverPage.vue |
import.meta.env.VITE_API_BASE_URL || 'http://127.0.0.1:8000' |
import { apiBaseUrl } from '../config' |
web-admin/src/views/DriverTaskDetailPage.vue |
import.meta.env.VITE_API_BASE_URL || 'http://127.0.0.1:8000' |
import { apiBaseUrl } from '../config' |
web-admin/src/views/OrderTrackingPage.vue |
import.meta.env.VITE_API_BASE_URL || 'http://127.0.0.1:8000' |
import { apiBaseUrl } from '../config' |
web-sales/src/views/OrderFormPage.vue |
import.meta.env.VITE_API_BASE_URL || "http://localhost:8000" |
import { apiBaseUrl } from '../config' |
1.8 微信小程序 frontend/mini-app/config.js(已修改)
// 开发环境: const apiBaseUrl = "http://127.0.0.1:8000";
// 生产环境:
const apiBaseUrl = "https://dda.gaowenbu.cn";
二、Nginx 配置(部署到服务器)
已生成两份 Nginx 配置文件,位于 deploy/nginx/ 目录:
2.1 部署步骤
# 1. 安装 Nginx(如未安装)
sudo apt update && sudo apt install -y nginx
# 2. 复制配置文件
sudo cp deploy/nginx/dda.gaowenbu.cn.conf /etc/nginx/sites-available/
sudo cp deploy/nginx/ddy.gaowenbu.cn.conf /etc/nginx/sites-available/
# 3. 创建软链接启用站点
sudo ln -sf /etc/nginx/sites-available/dda.gaowenbu.cn.conf /etc/nginx/sites-enabled/
sudo ln -sf /etc/nginx/sites-available/ddy.gaowenbu.cn.conf /etc/nginx/sites-enabled/
# 4. 删除默认站点(可选)
sudo rm -f /etc/nginx/sites-enabled/default
# 5. 测试配置
sudo nginx -t
# 6. 重载 Nginx
sudo systemctl reload nginx
2.2 前端文件部署路径
/var/www/order-flow/
├── web-admin/dist/ ← 管理员端构建产物
└── web-sales/dist/ ← 业务员端构建产物
部署前端文件:
# 创建目录
sudo mkdir -p /var/www/order-flow/web-admin/dist
sudo mkdir -p /var/www/order-flow/web-sales/dist
# 复制构建产物(在本地构建后上传,或在服务器上构建)
# 方式一:本地构建后 scp 上传
scp -r frontend/web-admin/dist/* user@server:/var/www/order-flow/web-admin/dist/
scp -r frontend/web-sales/dist/* user@server:/var/www/order-flow/web-sales/dist/
# 方式二:在服务器上构建
cd frontend/web-admin && npm install && npm run build
cd frontend/web-sales && npm install && npm run build
2.3 后端部署
# 安装 Python 依赖
cd backend && pip install -r requirements.txt
# 运行数据库迁移
alembic upgrade head
# 启动后端服务(推荐用 systemd 管理)
uvicorn backend.app.main:app --host 127.0.0.1 --port 8000
2.4 后端 systemd 服务文件(参考)
# /etc/systemd/system/order-flow.service
[Unit]
Description=Order Flow Backend
After=network.target mysql.service
[Service]
Type=simple
User=www-data
WorkingDirectory=/var/www/order-flow
EnvironmentFile=/var/www/order-flow/backend/.env
ExecStart=/usr/local/bin/uvicorn backend.app.main:app --host 127.0.0.1 --port 8000
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable order-flow
sudo systemctl start order-flow
三、HTTPS 配置(推荐)
使用 Let's Encrypt 免费证书:
# 安装 certbot
sudo apt install -y certbot python3-certbot-nginx
# 申请证书并自动配置 HTTPS
sudo certbot --nginx -d dda.gaowenbu.cn -d ddy.gaowenbu.cn
# 证书自动续期
sudo certbot renew --dry-run
四、部署前检查清单
服务器环境
- Nginx 已安装并运行
- Python 3.10+ 已安装
- MySQL 数据库可访问(当前配置
fn.taisan.online:33306) - Redis 已安装(如需要)
DNS 解析
dda.gaowenbu.cnA 记录指向服务器 IPddy.gaowenbu.cnA 记录指向服务器 IP
后端配置
backend/.env中APP_ENV=prodbackend/.env中BASE_URL=https://dda.gaowenbu.cnbackend/.env中CORS_ALLOW_ORIGINS包含两个域名backend/.env中SECRET_KEY已修改为随机强密钥backend/.env中数据库连接信息正确AUTH_TOKEN_STORE_PATH指向 Linux 有效路径LOCAL_UPLOAD_DIR指向 Linux 有效路径
前端配置
frontend/web-admin/.env中VITE_API_BASE_URL=https://dda.gaowenbu.cnfrontend/web-sales/.env中VITE_API_BASE_URL=https://ddy.gaowenbu.cn- 前端已重新构建 (
npm run build) - 构建产物已部署到
/var/www/order-flow/
微信小程序
- 微信公众平台后台配置合法域名
dda.gaowenbu.cn frontend/mini-app/config.js中apiBaseUrl已更新- 小程序已重新提交审核
安全
backend/.env不可被外部直接访问- 已配置 HTTPS(Let's Encrypt 或其他证书)
- 防火墙仅开放 80/443 端口
.env文件权限设为600(仅 owner 可读写)
五、本地开发环境恢复
如果需要恢复本地开发环境,将以下配置改回:
# backend/.env
APP_ENV=dev
BASE_URL=http://127.0.0.1:8000
CORS_ALLOW_ORIGINS=http://localhost:5173,http://localhost:5174
AUTH_TOKEN_STORE_PATH=D:/tmp/order-flow-auth/revoked_tokens.json
LOCAL_UPLOAD_DIR=D:/tmp/order-flow-oss/local-uploads
# frontend/web-admin/.env
VITE_API_BASE_URL=http://127.0.0.1:8000
# frontend/web-sales/.env
VITE_API_BASE_URL=http://127.0.0.1:8000
# frontend/mini-app/config.js
const apiBaseUrl = "http://127.0.0.1:8000";
六、修改文件总览
| 文件 | 操作 | 说明 |
|---|---|---|
backend/.env |
修改 | APP_ENV、BASE_URL、CORS、路径配置 |
backend/.env.example |
修改 | 新增 BASE_URL、LOCAL_UPLOAD_DIR 文档 |
backend/app/core/config.py |
修改 | 新增 base_url、local_upload_dir 字段 |
backend/app/main.py |
修改 | 本地上传目录改用配置 |
backend/app/api/files.py |
修改 | 文件 URL 改用配置 |
frontend/web-admin/.env |
新建 | 生产环境 API 地址 |
frontend/web-sales/.env |
新建 | 生产环境 API 地址 |
frontend/web-admin/src/views/DriverPage.vue |
修改 | 使用 config.js |
frontend/web-admin/src/views/DriverTaskDetailPage.vue |
修改 | 使用 config.js |
frontend/web-admin/src/views/OrderTrackingPage.vue |
修改 | 使用 config.js |
frontend/web-sales/src/views/OrderFormPage.vue |
修改 | 使用 config.js |
frontend/mini-app/config.js |
修改 | 生产 API 地址 |
deploy/nginx/dda.gaowenbu.cn.conf |
新建 | 管理员端 Nginx 配置 |
deploy/nginx/ddy.gaowenbu.cn.conf |
新建 | 业务员端 Nginx 配置 |
域名部署配置.md |
新建 | 本文档 |