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

6.0 KiB
Raw Blame History

前端 App 部署功能使用说明

📦 功能概述

新增的部署功能可以将已构建好的 dist_core 目录部署到服务器 /var/www/app/,并提供完整的版本历史管理和回滚功能。


🚀 使用流程

1. 准备工作

1.1 安装依赖

cd AdminTool
pip install -r requirements.txt

确保已安装:

  • PyQt5 - GUI 界面
  • paramiko - SSH 连接
  • pymysql - MySQL 数据库
  • requests - API 请求

1.2 配置服务器信息

编辑 AdminTool/deploy_config.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 构建前端

在部署前,请先手动构建前端:

cd Designer
npm run build:core

构建完成后会生成 Designer/dist_core/ 目录。


2. 启动管理工具

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

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/ 中的新文件。但如果页面没更新,可以尝试:

ssh root@your-server
systemctl restart caddy

Q2: 如果数据库连接失败怎么办?

A: 检查 deploy_config.json 中的 MySQL 配置:

  • 主机地址(host
  • 端口(port
  • 用户名和密码
  • 数据库名(database

Q3: 如何查看服务器上的实际文件?

A: 使用 SSH 登录:

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. 定期清理旧版本

    • 旧版本会占用服务器空间
    • 定期删除不再需要的版本

📞 支持

如有问题,请联系开发者或查看: