This commit is contained in:
zuowei1216
2025-12-22 21:06:29 +08:00
parent 8ea58fe480
commit 1b19ff1b92
179 changed files with 21895 additions and 3774 deletions

View File

@@ -0,0 +1,263 @@
# 前端 App 部署功能使用说明
## 📦 功能概述
新增的部署功能可以将已构建好的 `dist_core` 目录部署到服务器 `/var/www/app/`,并提供完整的版本历史管理和回滚功能。
---
## 🚀 使用流程
### 1. 准备工作
#### 1.1 安装依赖
```bash
cd AdminTool
pip install -r requirements.txt
```
确保已安装:
- `PyQt5` - GUI 界面
- `paramiko` - SSH 连接
- `pymysql` - MySQL 数据库
- `requests` - API 请求
#### 1.2 配置服务器信息
编辑 `AdminTool/deploy_config.json`
```json
{
"host": "103.97.201.136",
"port": "22",
"username": "root",
"password": "你的密码",
"remote_path": "/var/www/app",
"mysql": {
"host": "localhost",
"port": "3306",
"username": "designer_user",
"password": "DesignerPass123!",
"database": "designer_db"
}
}
```
#### 1.3 构建前端
**在部署前,请先手动构建前端:**
```bash
cd Designer
npm run build:core
```
构建完成后会生成 `Designer/dist_core/` 目录。
---
### 2. 启动管理工具
```bash
cd AdminTool
python admin_gui.py
```
打开后切换到 **"自动化部署"** 标签页。
---
### 3. 部署新版本
#### 步骤:
1. **选择 dist_core 目录**
- 点击 "浏览..." 按钮
- 选择 `Designer/dist_core` 目录
2. **添加备注(可选)**
- 例如:`修复主题同步bug``新增管理后台功能`
3. **点击 "🚀 部署到服务器"**
- 系统会:
- 自动生成时间戳版本号(如 `20231220_153045`
- 备份当前运行版本到 `/var/www/app_versions/backup_XXXXXX/`
- 清空 `/var/www/app/`
- 上传新版本
- 保存版本到 `/var/www/app_versions/20231220_153045/`
- 记录到 MySQL 数据库
4. **查看部署日志**
- 底部日志区域会实时显示进度
- 部署成功后会弹出提示
---
### 4. 查看版本历史
部署成功后,版本会自动显示在 **"版本历史管理"** 表格中:
| 版本号 | 部署时间 | 大小(MB) | 备注 | 状态 |
|--------|----------|----------|------|------|
| 20231220_153045 | 2023-12-20 15:30:45 | 12.5 | 修复主题同步bug | ✅ 当前 |
| 20231220_102030 | 2023-12-20 10:20:30 | 12.3 | 初始版本 | |
- **绿色 "✅ 当前"** 表示正在服务器上运行的版本
- 点击 **"🔄 刷新列表"** 可手动刷新
---
### 5. 回滚到历史版本
如果新版本有问题,可以快速回滚:
1. **选择要回滚的版本**
- 在表格中点击某个历史版本
2. **点击 "⏪ 回滚到选中版本"**
- 确认对话框会显示版本信息
3. **确认回滚**
- 系统会:
- 备份当前版本
-`/var/www/app_versions/` 复制选中版本到 `/var/www/app/`
- 更新数据库
4. **刷新页面**
- 访问 `https://app.aidg168.uk/` 查看回滚结果
---
### 6. 删除历史版本
如果某个版本不再需要:
1. **选择要删除的版本**
2. **点击 "🗑️ 删除选中版本"**
3. **确认删除**
- 会同时删除:
- 数据库记录
- 服务器文件 `/var/www/app_versions/XXXXXX/`
**注意**
- ❌ 无法删除当前正在使用的版本
- ⚠️ 删除操作不可恢复
---
## 📁 服务器目录结构
```
/var/www/
├── app/ ← 当前运行版本Caddy 直接访问)
│ ├── index.html
│ ├── assets/
│ └── ...
└── app_versions/ ← 版本历史存档
├── 20231220_153045/ ← 版本 1
├── 20231220_164522/ ← 版本 2
├── backup_20231221_092301/ ← 自动备份
└── ...
```
---
## 🗄️ 数据库表结构
**表名**`app_deployments`
```sql
CREATE TABLE app_deployments (
id INT PRIMARY KEY AUTO_INCREMENT,
version VARCHAR(50) UNIQUE NOT NULL, -- 版本号(时间戳)
deployed_at DATETIME NOT NULL, -- 部署时间
is_current BOOLEAN DEFAULT FALSE, -- 是否当前版本
file_size_mb DECIMAL(10, 2), -- 文件大小MB
comment VARCHAR(500), -- 备注
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
```
---
## ❓ 常见问题
### Q1: 部署后需要重启 Caddy 吗?
**A**: 通常不需要。Caddy 会自动读取 `/var/www/app/` 中的新文件。但如果页面没更新,可以尝试:
```bash
ssh root@your-server
systemctl restart caddy
```
### Q2: 如果数据库连接失败怎么办?
**A**: 检查 `deploy_config.json` 中的 MySQL 配置:
- 主机地址(`host`
- 端口(`port`
- 用户名和密码
- 数据库名(`database`
### Q3: 如何查看服务器上的实际文件?
**A**: 使用 SSH 登录:
```bash
ssh root@103.97.201.136
cd /var/www/app
ls -lh
```
### Q4: 部署失败后如何恢复?
**A**: 如果部署中断:
1. 进入 GUI 的"版本历史管理"
2. 选择上一个稳定版本
3. 点击"回滚"
### Q5: 可以同时部署到多个服务器吗?
**A**: 当前版本不支持。如需要,可以:
- 修改服务器配置
- 重新部署
---
## 🛠️ 技术细节
### 版本号生成规则
- 格式:`YYYYMMDD_HHMMSS`
- 示例:`20231220_153045` = 2023年12月20日 15:30:45
- 自动生成,无需手动输入
### 备份机制
- **部署新版本时**:自动备份当前版本为 `backup_{timestamp}`
- **回滚时**:自动备份当前版本
- 备份存储在 `/var/www/app_versions/`
### 上传方式
- 使用 SFTP基于 SSH
- 递归上传整个目录
- 实时显示上传进度
---
## ⚠️ 注意事项
1. **部署前务必构建**
- 必须先运行 `npm run build:core`
- 确保 `dist_core/` 目录存在且完整
2. **生产环境谨慎操作**
- 部署会直接替换线上版本
- 建议先在测试环境验证
3. **保留足够历史版本**
- 建议至少保留 3-5 个历史版本
- 便于快速回滚
4. **定期清理旧版本**
- 旧版本会占用服务器空间
- 定期删除不再需要的版本
---
## 📞 支持
如有问题,请联系开发者或查看:
- [AdminTool/README.md](./README.md)
- [项目文档](../README.md)