# 域名部署配置文档 > **使用宝塔面板部署?** 请直接参考 [deploy/宝塔部署指南.md](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_URL` - `local_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`(新建) ```env VITE_API_BASE_URL=https://dda.gaowenbu.cn VITE_ENABLE_DEMO_FALLBACK=false ``` ### 1.6 前端 `frontend/web-sales/.env`(新建) ```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`(已修改) ```js // 开发环境: const apiBaseUrl = "http://127.0.0.1:8000"; // 生产环境: const apiBaseUrl = "https://dda.gaowenbu.cn"; ``` --- ## 二、Nginx 配置(部署到服务器) 已生成两份 Nginx 配置文件,位于 `deploy/nginx/` 目录: ### 2.1 部署步骤 ```bash # 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/ ← 业务员端构建产物 ``` 部署前端文件: ```bash # 创建目录 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 后端部署 ```bash # 安装 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 服务文件(参考) ```ini # /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 ``` ```bash sudo systemctl daemon-reload sudo systemctl enable order-flow sudo systemctl start order-flow ``` --- ## 三、HTTPS 配置(推荐) 使用 Let's Encrypt 免费证书: ```bash # 安装 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.cn` A 记录指向服务器 IP - [ ] `ddy.gaowenbu.cn` A 记录指向服务器 IP ### 后端配置 - [ ] `backend/.env` 中 `APP_ENV=prod` - [ ] `backend/.env` 中 `BASE_URL=https://dda.gaowenbu.cn` - [ ] `backend/.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.cn` - [ ] `frontend/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 可读写) --- ## 五、本地开发环境恢复 如果需要恢复本地开发环境,将以下配置改回: ```bash # 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` | 新建 | 本文档 |