383 lines
8.5 KiB
Markdown
383 lines
8.5 KiB
Markdown
# 宝塔面板部署指南
|
||
|
||
## 域名规划
|
||
|
||
| 域名 | 用途 | 端口 |
|
||
|------|------|------|
|
||
| `dda.gaowenbu.cn` | 管理员端 (web-admin) | 80/443 |
|
||
| `ddy.gaowenbu.cn` | 业务员端 (web-sales) | 80/443 |
|
||
| 后端 API | FastAPI 服务 | 127.0.0.1:8000 |
|
||
|
||
---
|
||
|
||
## 一、服务器环境准备
|
||
|
||
### 1.1 安装宝塔面板
|
||
|
||
```bash
|
||
# CentOS
|
||
yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh
|
||
|
||
# Ubuntu/Debian
|
||
wget -O install.sh https://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh
|
||
```
|
||
|
||
### 1.2 宝塔面板安装软件
|
||
|
||
登录宝塔面板后,在「软件商店」中安装:
|
||
|
||
| 软件 | 版本建议 | 用途 |
|
||
|------|---------|------|
|
||
| **Nginx** | 1.24+ | 反向代理 + 前端静态文件 |
|
||
| **MySQL** | 5.7+ 或 8.0 | 数据库(如果用远程数据库可跳过) |
|
||
| **Python 项目管理器** | 最新版 | 管理 Python 虚拟环境和后端进程 |
|
||
| **phpMyAdmin** | 可选 | 数据库管理 |
|
||
|
||
### 1.3 DNS 解析
|
||
|
||
在域名管理后台添加两条 A 记录:
|
||
|
||
```
|
||
dda.gaowenbu.cn → 服务器IP
|
||
ddy.gaowenbu.cn → 服务器IP
|
||
```
|
||
|
||
---
|
||
|
||
## 二、上传代码到服务器
|
||
|
||
### 2.1 创建项目目录
|
||
|
||
通过宝塔面板「文件」功能,创建目录:
|
||
|
||
```
|
||
/www/wwwroot/order-flow/
|
||
```
|
||
|
||
### 2.2 上传文件
|
||
|
||
**方式一:宝塔面板上传**
|
||
|
||
1. 在本地将项目打包为 zip(排除 `node_modules`、`__pycache__`、`.git`)
|
||
2. 在宝塔「文件」页面上传到 `/www/wwwroot/order-flow/`
|
||
3. 在线解压
|
||
|
||
**方式二:Git 拉取(推荐)**
|
||
|
||
```bash
|
||
cd /www/wwwroot/
|
||
git clone <你的仓库地址> order-flow
|
||
```
|
||
|
||
### 2.3 上传目录结构
|
||
|
||
```
|
||
/www/wwwroot/order-flow/
|
||
├── backend/
|
||
│ ├── app/
|
||
│ ├── migrations/
|
||
│ ├── scripts/
|
||
│ ├── .env ← 生产环境配置(已修改好)
|
||
│ ├── requirements.txt
|
||
│ └── main.py
|
||
├── frontend/
|
||
│ ├── web-admin/
|
||
│ │ ├── src/
|
||
│ │ ├── .env.production ← 已配置好
|
||
│ │ └── package.json
|
||
│ └── web-sales/
|
||
│ ├── src/
|
||
│ ├── .env.production ← 已配置好
|
||
│ └── package.json
|
||
└── deploy/
|
||
└── nginx/
|
||
├── dda.gaowenbu.cn.conf
|
||
└── ddy.gaowenbu.cn.conf
|
||
```
|
||
|
||
---
|
||
|
||
## 三、部署后端(Python 项目管理器)
|
||
|
||
### 3.1 安装 Python 项目管理器
|
||
|
||
宝塔面板 → 软件商店 → 搜索「Python项目管理器」→ 安装
|
||
|
||
### 3.2 创建 Python 项目
|
||
|
||
1. 打开「Python项目管理器」
|
||
2. 点击「添加项目」,填写:
|
||
|
||
| 配置项 | 值 |
|
||
|--------|---|
|
||
| 项目名称 | `order-flow` |
|
||
| 项目路径 | `/www/wwwroot/order-flow/backend` |
|
||
| Python版本 | `3.10` 或 `3.11` |
|
||
| 启动文件 | `main.py` |
|
||
| 启动方式 | `uvicorn` |
|
||
| 端口 | `8000` |
|
||
| 绑定地址 | `127.0.0.1` |
|
||
| 开机自启 | ✅ 勾选 |
|
||
|
||
3. 点击「确定」创建项目
|
||
|
||
### 3.3 安装依赖
|
||
|
||
项目创建后,点击项目右侧「终端」按钮,执行:
|
||
|
||
```bash
|
||
# 激虚拟环境会自动创建,手动安装依赖
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
或者在 Python 项目管理器中点击项目 → 「模块」→ 「安装依赖」→ 选择 `requirements.txt`
|
||
|
||
### 3.4 创建数据库(如果用远程数据库可跳过)
|
||
|
||
如果需要在本机建数据库:
|
||
|
||
1. 宝塔面板 → 数据库 → 添加数据库
|
||
2. 填写:
|
||
- 数据库名:`order_flow`
|
||
- 用户名:`order_flow`
|
||
- 密码:(设置一个强密码)
|
||
- 访问权限:`本地服务器` 或 `所有人`
|
||
|
||
3. **修改 `backend/.env` 中的数据库配置**:
|
||
|
||
```bash
|
||
MYSQL_HOST=127.0.0.1
|
||
MYSQL_PORT=3306
|
||
MYSQL_DATABASE=order_flow
|
||
MYSQL_USER=order_flow
|
||
MYSQL_PASSWORD=你设置的密码
|
||
```
|
||
|
||
4. 初始化数据库表:
|
||
|
||
```bash
|
||
cd /www/wwwroot/order-flow/backend
|
||
# Python项目管理器的终端中执行
|
||
alembic upgrade head
|
||
```
|
||
|
||
### 3.5 启动后端服务
|
||
|
||
在 Python 项目管理器中点击「启动」或「重启」按钮。
|
||
|
||
验证后端是否正常:
|
||
|
||
```bash
|
||
curl http://127.0.0.1:8000/api/health
|
||
```
|
||
|
||
---
|
||
|
||
## 四、部署前端(Nginx 站点)
|
||
|
||
### 4.1 构建前端
|
||
|
||
**方式一:在本地构建后上传**
|
||
|
||
```bash
|
||
# 本地执行
|
||
cd frontend/web-admin
|
||
npm install
|
||
npm run build
|
||
# 产物在 frontend/web-admin/dist/
|
||
|
||
cd ../web-sales
|
||
npm install
|
||
npm run build
|
||
# 产物在 frontend/web-sales/dist/
|
||
```
|
||
|
||
将 `dist` 目录上传到服务器对应位置。
|
||
|
||
**方式二:在服务器上构建**
|
||
|
||
```bash
|
||
cd /www/wwwroot/order-flow/frontend/web-admin
|
||
npm install
|
||
npm run build
|
||
|
||
cd /www/wwwroot/order-flow/frontend/web-sales
|
||
npm install
|
||
npm run build
|
||
```
|
||
|
||
### 4.2 创建站点(管理员端)
|
||
|
||
1. 宝塔面板 → 网站 → 添加站点
|
||
2. 填写:
|
||
- 域名:`dda.gaowenbu.cn`
|
||
- 根目录:`/www/wwwroot/order-flow/frontend/web-admin/dist`
|
||
- PHP版本:`纯静态`
|
||
|
||
3. 点击「提交」
|
||
|
||
### 4.3 配置 Nginx 反向代理
|
||
|
||
1. 点击站点 `dda.gaowenbu.cn` 右侧「设置」
|
||
2. 点击「配置文件」,在 `server { }` 块内添加以下内容(在 `location /` 之前):
|
||
|
||
```nginx
|
||
# API 反向代理
|
||
location /api/ {
|
||
proxy_pass http://127.0.0.1:8000;
|
||
proxy_set_header Host $host;
|
||
proxy_set_header X-Real-IP $remote_addr;
|
||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||
proxy_set_header X-Forwarded-Proto $scheme;
|
||
proxy_read_timeout 300s;
|
||
proxy_connect_timeout 60s;
|
||
}
|
||
|
||
# 上传文件代理
|
||
location /uploads/ {
|
||
proxy_pass http://127.0.0.1:8000;
|
||
proxy_set_header Host $host;
|
||
}
|
||
```
|
||
|
||
3. 点击「伪静态」,添加:
|
||
|
||
```nginx
|
||
location / {
|
||
try_files $uri $uri/ /index.html;
|
||
}
|
||
```
|
||
|
||
4. 保存并重启 Nginx
|
||
|
||
### 4.4 创建站点(业务员端)
|
||
|
||
1. 宝塔面板 → 网站 → 添加站点
|
||
2. 填写:
|
||
- 域名:`ddy.gaowenbu.cn`
|
||
- 根目录:`/www/wwwroot/order-flow/frontend/web-sales/dist`
|
||
- PHP版本:`纯静态`
|
||
|
||
3. 配置 Nginx 反向代理(同上,配置内容完全一样)
|
||
|
||
---
|
||
|
||
## 五、配置 HTTPS(SSL 证书)
|
||
|
||
### 5.1 申请免费证书
|
||
|
||
1. 宝塔面板 → 网站 → 点击站点 `dda.gaowenbu.cn` → 设置 → SSL
|
||
2. 选择「Let's Encrypt」→ 勾选域名 → 点击「申请」
|
||
3. 同样操作 `ddy.gaowenbu.cn`
|
||
|
||
### 5.2 强制 HTTPS
|
||
|
||
申请成功后,开启「强制HTTPS」开关。
|
||
|
||
---
|
||
|
||
## 六、防火墙配置
|
||
|
||
宝塔面板 → 安全 → 防火墙,确保放行以下端口:
|
||
|
||
| 端口 | 协议 | 用途 |
|
||
|------|------|------|
|
||
| 80 | TCP | HTTP |
|
||
| 443 | TCP | HTTPS |
|
||
| 8888 | TCP | 宝塔面板(建议改端口) |
|
||
|
||
> 后端 8000 端口不需要对外开放,只通过 Nginx 反向代理访问。
|
||
|
||
---
|
||
|
||
## 七、部署后验证清单
|
||
|
||
### 7.1 服务验证
|
||
|
||
```bash
|
||
# 检查后端是否运行
|
||
curl http://127.0.0.1:8000/api/health
|
||
|
||
# 检查 Nginx 是否正常
|
||
curl -I https://dda.gaowenbu.cn
|
||
curl -I https://ddy.gaowenbu.cn
|
||
|
||
# 检查 API 代理是否正常
|
||
curl https://dda.gaowenbu.cn/api/health
|
||
```
|
||
|
||
### 7.2 浏览器访问
|
||
|
||
- [ ] `https://dda.gaowenbu.cn` 能打开管理员登录页
|
||
- [ ] `https://ddy.gaowenbu.cn` 能打开业务员登录页
|
||
- [ ] 登录功能正常
|
||
- [ ] API 请求正常(F12 Network 检查)
|
||
|
||
### 7.3 微信小程序
|
||
|
||
- [ ] 微信公众平台后台 → 开发管理 → 服务器域名 → 添加 `https://dda.gaowenbu.cn`
|
||
- [ ] 小程序重新提交审核
|
||
|
||
---
|
||
|
||
## 八、常见问题排查
|
||
|
||
### Q1: 页面打开是 404 或空白
|
||
|
||
检查前端是否构建成功,`dist` 目录是否有 `index.html`。
|
||
|
||
### Q2: API 请求 502 Bad Gateway
|
||
|
||
后端服务未启动,检查 Python 项目管理器中的项目状态。
|
||
|
||
### Q3: API 请求 CORS 错误
|
||
|
||
检查 `backend/.env` 中 `CORS_ALLOW_ORIGINS` 是否包含当前域名。
|
||
|
||
### Q4: 数据库连接失败
|
||
|
||
检查 `backend/.env` 中数据库配置,以及 MySQL 服务是否运行。
|
||
|
||
### Q5: 上传文件失败
|
||
|
||
检查 `/tmp/order-flow-oss/local-uploads` 目录权限:
|
||
|
||
```bash
|
||
mkdir -p /tmp/order-flow-oss/local-uploads
|
||
chmod 755 /tmp/order-flow-oss/local-uploads
|
||
```
|
||
|
||
### Q6: 静态资源加载慢
|
||
|
||
Nginx 配置中添加缓存(已在提供的配置中包含)。
|
||
|
||
---
|
||
|
||
## 九、日常维护
|
||
|
||
### 更新代码
|
||
|
||
```bash
|
||
cd /www/wwwroot/order-flow
|
||
git pull
|
||
|
||
# 重新构建前端
|
||
cd frontend/web-admin && npm run build
|
||
cd ../web-sales && npm run build
|
||
|
||
# 重启后端
|
||
# 在宝塔 Python 项目管理器中点击「重启」
|
||
```
|
||
|
||
### 查看后端日志
|
||
|
||
```bash
|
||
# 宝塔 Python 项目管理器 → 项目 → 日志
|
||
# 或直接查看
|
||
tail -f /www/wwwroot/order-flow/logs/*.log
|
||
```
|
||
|
||
### 数据库备份
|
||
|
||
宝塔面板 → 数据库 → 选择数据库 → 备份 → 设置定时备份
|