签入版本

This commit is contained in:
2026-09-12 23:12:15 +08:00
commit 91998056ca
1841 changed files with 341325 additions and 0 deletions
@@ -0,0 +1,206 @@
:::tip 本章概要
从服务器准备到应用上线的完整部署操作清单,适用于生产环境首次部署和后续版本更新。
:::
# 部署 Checklist
本章提供从服务器准备到应用上线的完整部署操作清单,适用于生产环境首次部署和后续版本更新。
## 首次部署 Checklist
### 第 1 阶段:服务器准备
- [ ] 服务器操作系统:CentOS 7+ / Ubuntu 20.04+ / Debian 11+
- [ ] 防火墙开放端口:80(HTTP)、443(HTTPS)、22(SSH)
- [ ] 创建部署用户(非 root)
- [ ] 配置 SSH 密钥登录
- [ ] 配置时区:`timedatectl set-timezone Asia/Shanghai`
### 第 2 阶段:环境安装
**Python 环境**:
- [ ] 安装 Python 3.12+
- [ ] 安装 pip:`apt install python3-pip` 或 `yum install python3-pip`
- [ ] 创建虚拟环境:`python3 -m venv /opt/venv`
- [ ] 激活虚拟环境:`source /opt/venv/bin/activate`
- [ ] 安装依赖:`pip install -r requirements.txt`
**数据库**:
- [ ] 安装 MySQL 8.0+
- [ ] 创建数据库:`CREATE DATABASE djangoadmin.flask.elevue DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;`
- [ ] 创建数据库用户并授权
- [ ] 修改 `.env` 中的数据库配置
- [ ] 初始化数据库:`python scripts/setup_db.py`
**Redis**:
- [ ] 安装 Redis 6.0+
- [ ] 配置密码
- [ ] 修改 `.env` 中的 Redis 配置
- [ ] 测试连接:`redis-cli ping`
**Node.js(前端构建)**:
- [ ] 安装 Node.js 18+
- [ ] 安装 pnpm:`npm install -g pnpm`
- [ ] 安装前端依赖:`cd ui && pnpm install`
- [ ] 构建前端:`pnpm build`
### 第 3 阶段:应用部署
**后端**:
- [ ] 上传项目代码到服务器
- [ ] 配置 `.env` 文件(数据库、Redis、JWT_SALT 等)
- [ ] 生成 JWT 密钥:`python -c "import secrets; print(secrets.token_urlsafe(48))"`
- [ ] 测试启动:`python app.py`
- [ ] 配置 Supervisor 进程管理
- [ ] 启动后端服务:`supervisorctl start flask`
**前端**:
- [ ] 构建产物上传到服务器(`ui/dist/` 目录)
- [ ] 配置 Nginx 指向前端产物目录
- [ ] 配置 Nginx 反向代理后端 API
### 第 4 阶段:Nginx 配置
```nginx
server {
listen 80;
server_name your-domain.com;
# 前端静态文件
root /opt/project/ui/dist;
index index.html;
# 前端路由
location / {
try_files $uri $uri/ /index.html;
}
# 后端 API 反向代理
location /api/ {
proxy_pass http://127.0.0.1:8021;
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;
}
# 上传文件访问
location /uploads/ {
alias /opt/project/uploads/;
expires 30d;
}
}
```
- [ ] 配置 Nginx
- [ ] 测试 Nginx 配置:`nginx -t`
- [ ] 重载 Nginx:`nginx -s reload`
### 第 5 阶段:SSL 证书(推荐)
- [ ] 申请 SSL 证书(Let's Encrypt / 购买)
- [ ] 配置 HTTPS
- [ ] 配置 HTTP 自动跳转 HTTPS
- [ ] 测试 HTTPS 访问
### 第 6 阶段:验证
- [ ] 访问前端页面,确认正常加载
- [ ] 登录测试(admin / 123456)
- [ ] 修改默认密码
- [ ] 测试核心功能(用户管理、角色管理等)
- [ ] 检查后端日志:`tail -f logs/app.log`
- [ ] 检查 Supervisor 状态:`supervisorctl status`
## 版本更新 Checklist
### 后端更新
- [ ] 拉取最新代码:`git pull origin main`
- [ ] 安装新依赖(如有):`pip install -r requirements.txt`
- [ ] 执行数据库迁移(如有):`flask db upgrade`
- [ ] 重启后端服务:`supervisorctl restart flask`
- [ ] 检查日志:`tail -f logs/app.log`
### 前端更新
- [ ] 拉取最新代码:`git pull origin main`
- [ ] 安装新依赖(如有):`pnpm install`
- [ ] 构建前端:`pnpm build`
- [ ] 替换服务器上的 `ui/dist/` 目录
- [ ] 清除浏览器缓存测试
### 数据库迁移
- [ ] 备份数据库:`mysqldump -uroot -p djangoadmin.flask.elevue > backup.sql`
- [ ] 执行迁移:`flask db upgrade`
- [ ] 验证迁移结果
## Docker 部署 Checklist
- [ ] 安装 Docker 和 Docker Compose
- [ ] 配置 `.env` 文件
- [ ] 构建镜像:`docker-compose build`
- [ ] 启动服务:`docker-compose up -d`
- [ ] 检查容器状态:`docker-compose ps`
- [ ] 查看日志:`docker-compose logs -f`
- [ ] 初始化数据库(首次):`docker-compose exec app python scripts/setup_db.py`
## 监控 Checklist
- [ ] 配置健康检查端点
- [ ] 配置日志轮转(logrotate)
- [ ] 配置数据库自动备份(cron)
- [ ] 配置 Redis 持久化(AOF/RDB)
- [ ] 配置磁盘空间监控
- [ ] 配置内存使用监控
## 安全 Checklist
- [ ] 修改默认密码(admin / 123456)
- [ ] 设置强密码的 JWT_SALT
- [ ] 设置 `FLASK_DEBUG=False`
- [ ] 设置 `FLASK_DEMO=False`(生产环境)
- [ ] 配置 CORS 白名单(非 `*`)
- [ ] 配置 HTTPS
- [ ] 关闭不必要的端口
- [ ] 定期更新系统和依赖包
## 回滚方案
### 后端回滚
```bash
# 回滚代码
git checkout <上一个稳定版本tag>
# 回滚数据库迁移
flask db downgrade -1
# 重启服务
supervisorctl restart flask
```
### 前端回滚
```bash
# 替换为上一版本的构建产物
cp -r /opt/backup/dist /opt/project/ui/dist
```
### 数据库回滚
```bash
# 从备份恢复
mysql -uroot -p djangoadmin.flask.elevue < backup.sql
```
## 总结
部署 Checklist 覆盖了从服务器准备到应用上线的完整流程。首次部署建议按顺序逐项检查,版本更新时使用更新 Checklist 快速操作。生产环境务必做好备份和监控。