Files
DP/tempdocs/部署功能使用说明.md
zuowei1216 1b19ff1b92 20251222
2025-12-22 21:06:29 +08:00

264 lines
6.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 前端 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)