264 lines
6.0 KiB
Markdown
264 lines
6.0 KiB
Markdown
# 前端 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)
|
||
|