8.5 KiB
8.5 KiB
宝塔面板部署指南
域名规划
| 域名 | 用途 | 端口 |
|---|---|---|
dda.gaowenbu.cn |
管理员端 (web-admin) | 80/443 |
ddy.gaowenbu.cn |
业务员端 (web-sales) | 80/443 |
| 后端 API | FastAPI 服务 | 127.0.0.1:8000 |
一、服务器环境准备
1.1 安装宝塔面板
# 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 上传文件
方式一:宝塔面板上传
- 在本地将项目打包为 zip(排除
node_modules、__pycache__、.git) - 在宝塔「文件」页面上传到
/www/wwwroot/order-flow/ - 在线解压
方式二:Git 拉取(推荐)
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 项目
- 打开「Python项目管理器」
- 点击「添加项目」,填写:
| 配置项 | 值 |
|---|---|
| 项目名称 | order-flow |
| 项目路径 | /www/wwwroot/order-flow/backend |
| Python版本 | 3.10 或 3.11 |
| 启动文件 | main.py |
| 启动方式 | uvicorn |
| 端口 | 8000 |
| 绑定地址 | 127.0.0.1 |
| 开机自启 | ✅ 勾选 |
- 点击「确定」创建项目
3.3 安装依赖
项目创建后,点击项目右侧「终端」按钮,执行:
# 激虚拟环境会自动创建,手动安装依赖
pip install -r requirements.txt
或者在 Python 项目管理器中点击项目 → 「模块」→ 「安装依赖」→ 选择 requirements.txt
3.4 创建数据库(如果用远程数据库可跳过)
如果需要在本机建数据库:
-
宝塔面板 → 数据库 → 添加数据库
-
填写:
- 数据库名:
order_flow - 用户名:
order_flow - 密码:(设置一个强密码)
- 访问权限:
本地服务器或所有人
- 数据库名:
-
修改
backend/.env中的数据库配置:
MYSQL_HOST=127.0.0.1
MYSQL_PORT=3306
MYSQL_DATABASE=order_flow
MYSQL_USER=order_flow
MYSQL_PASSWORD=你设置的密码
- 初始化数据库表:
cd /www/wwwroot/order-flow/backend
# Python项目管理器的终端中执行
alembic upgrade head
3.5 启动后端服务
在 Python 项目管理器中点击「启动」或「重启」按钮。
验证后端是否正常:
curl http://127.0.0.1:8000/api/health
四、部署前端(Nginx 站点)
4.1 构建前端
方式一:在本地构建后上传
# 本地执行
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 目录上传到服务器对应位置。
方式二:在服务器上构建
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 创建站点(管理员端)
-
宝塔面板 → 网站 → 添加站点
-
填写:
- 域名:
dda.gaowenbu.cn - 根目录:
/www/wwwroot/order-flow/frontend/web-admin/dist - PHP版本:
纯静态
- 域名:
-
点击「提交」
4.3 配置 Nginx 反向代理
- 点击站点
dda.gaowenbu.cn右侧「设置」 - 点击「配置文件」,在
server { }块内添加以下内容(在location /之前):
# 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;
}
- 点击「伪静态」,添加:
location / {
try_files $uri $uri/ /index.html;
}
- 保存并重启 Nginx
4.4 创建站点(业务员端)
-
宝塔面板 → 网站 → 添加站点
-
填写:
- 域名:
ddy.gaowenbu.cn - 根目录:
/www/wwwroot/order-flow/frontend/web-sales/dist - PHP版本:
纯静态
- 域名:
-
配置 Nginx 反向代理(同上,配置内容完全一样)
五、配置 HTTPS(SSL 证书)
5.1 申请免费证书
- 宝塔面板 → 网站 → 点击站点
dda.gaowenbu.cn→ 设置 → SSL - 选择「Let's Encrypt」→ 勾选域名 → 点击「申请」
- 同样操作
ddy.gaowenbu.cn
5.2 强制 HTTPS
申请成功后,开启「强制HTTPS」开关。
六、防火墙配置
宝塔面板 → 安全 → 防火墙,确保放行以下端口:
| 端口 | 协议 | 用途 |
|---|---|---|
| 80 | TCP | HTTP |
| 443 | TCP | HTTPS |
| 8888 | TCP | 宝塔面板(建议改端口) |
后端 8000 端口不需要对外开放,只通过 Nginx 反向代理访问。
七、部署后验证清单
7.1 服务验证
# 检查后端是否运行
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 目录权限:
mkdir -p /tmp/order-flow-oss/local-uploads
chmod 755 /tmp/order-flow-oss/local-uploads
Q6: 静态资源加载慢
Nginx 配置中添加缓存(已在提供的配置中包含)。
九、日常维护
更新代码
cd /www/wwwroot/order-flow
git pull
# 重新构建前端
cd frontend/web-admin && npm run build
cd ../web-sales && npm run build
# 重启后端
# 在宝塔 Python 项目管理器中点击「重启」
查看后端日志
# 宝塔 Python 项目管理器 → 项目 → 日志
# 或直接查看
tail -f /www/wwwroot/order-flow/logs/*.log
数据库备份
宝塔面板 → 数据库 → 选择数据库 → 备份 → 设置定时备份