GameServerManager/docs/云构建部署功能说明.md
2025-10-23 20:32:25 +08:00

13 KiB
Raw Permalink Blame History

云构建部署功能说明

功能概述

云构建部署是 GameServerManager3 提供的一项创新功能,通过 GSManager 云端构建服务在云端直接运行核心成功后将其打包,拥有接近百分百的开服成功率,从根源解决因本地环境和问题造成的启动失败等疑难杂症。

核心优势

  • 高成功率:云端构建确保环境一致性,避免本地环境问题
  • 零配置无需本地安装Java、Python等依赖环境
  • 快速部署:预构建缓存加速,支持一键部署
  • 智能检测:自动识别启动命令和运行环境
  • 实时监控:可视化构建进度和日志输出

功能特性

1. 支持的构建平台

目前支持以下构建平台:

  • 我的世界原版Java部署 (msl_Official)
    • Paper
    • Purpur
    • Fabric
    • Spigot
    • 等多种主流服务端核心

2. 核心功能

2.1 核心列表获取

  • 自动从云端获取可用的服务端核心列表
  • 支持版本筛选和排序
  • 显示核心描述和特性

2.2 构建与缓存

  • 智能缓存机制:已构建的版本直接从缓存获取
  • 实时构建:未缓存版本在云端实时构建
  • 构建限流防止滥用1小时内最多2次构建

2.3 下载与解压

  • 后端自动下载zip文件到临时目录
  • 自动解压到用户指定的部署目录
  • 自动清理临时文件

2.4 启动命令检测

智能检测启动脚本,优先级如下:

Windows平台

  1. .\run.bat / .\run (优先)
  2. .\start.bat (次选)
  3. .\start.bat (默认)

Linux/Unix平台

  1. bash run.sh / ./run (优先)
  2. bash start.sh (次选)
  3. bash start.sh (默认)

2.5 实例创建

  • 自动填充实例名称(核心名称+版本号)
  • 自动设置启动命令
  • 支持手动修改所有配置

使用指南

1. 进入云构建部署页面

  1. 登录 GameServerManager3
  2. 进入"游戏部署"页面
  3. 点击"云构建部署"标签页

2. 选择构建平台

在左侧面板中:

  1. 选择构建平台:当前支持"我的世界原版Java部署"
  2. 选择服务端核心:从下拉列表中选择(如 Paper、Purpur 等)
  3. 选择Minecraft版本:选择要部署的版本

3. 配置部署

在右侧面板中:

  1. 设置部署路径:输入服务端要安装到的目录

    • 系统会自动填充默认游戏路径
    • 可以手动修改为自定义路径
    • 路径会根据选择的核心和版本自动生成
  2. 查看统计信息(可选):

    • 显示该核心的总下载次数
    • 显示当前版本的下载次数

4. 开始构建部署

  1. 点击"开始构建部署"按钮

  2. 系统会执行以下步骤:

    • 检查缓存状态
    • 创建构建任务(如需)
    • 实时显示构建进度
    • 下载文件到后端
    • 自动解压到部署目录
    • 检测启动命令
  3. 观察实时日志输出:

    • 查看构建进度百分比
    • 查看详细日志信息
    • 等待部署完成

5. 创建实例

部署完成后:

  1. 点击"创建实例"按钮
  2. 确认自动填充的信息:
    • 实例名称
    • 实例描述
    • 启动命令
  3. 点击"创建实例"完成

技术实现

前端实现

位置client/src/pages/GameDeploymentPage.tsx

核心状态管理

// 云构建相关状态
const [cloudBuildType, setCloudBuildType] = useState('msl_Official')
const [cloudBuildCores, setCloudBuildCores] = useState<any[]>([])
const [selectedCloudCore, setSelectedCloudCore] = useState<any>(null)
const [selectedCloudVersion, setSelectedCloudVersion] = useState<string>('')
const [cloudBuildPath, setCloudBuildPath] = useState('')
const [buildingCloud, setBuildingCloud] = useState(false)
const [cloudBuildProgress, setCloudBuildProgress] = useState<number>(0)
const [cloudBuildLogs, setCloudBuildLogs] = useState<string[]>([])

主要功能函数

  • fetchCloudBuildCores() - 获取核心列表
  • fetchCloudBuildStats() - 获取统计数据
  • handleCloudBuild() - 开始构建
  • monitorCloudBuildProgress() - 监控进度
  • handleCloudDownload() - 下载和解压
  • handleCreateCloudInstance() - 创建实例

后端实现

位置server/src/routes/cloudBuild.ts

API路由

路由 方法 说明
/:type/cores GET 获取核心列表
/build POST 创建构建任务
/build/:taskId GET 查询构建状态
/download POST 下载并解压到目标目录
/stats GET 获取统计数据

核心逻辑

// 下载并解压流程
1. 生成下载链接
2. 下载文件到临时目录 (server/temp/)
3. 解压到用户指定目录
4. 检测启动脚本
5. 清理临时文件
6. 返回部署结果

API客户端

位置client/src/utils/api.ts

新增方法

// 获取核心列表
async getCloudBuildCores(type: string = 'msl_Official')

// 创建构建任务
async createCloudBuildTask(data: {
  coreName: string
  version: string
  type?: string
})

// 查询构建状态
async getCloudBuildTaskStatus(taskId: string)

// 下载并解压
async downloadAndExtractCloudBuild(data: {
  fileName?: string
  taskId?: string
  coreName: string
  version: string
  targetPath: string
})

// 获取统计数据
async getCloudBuildStats()

云端服务API

服务器地址https://download.mc.xiaozhuhouses.asia:4433

1. 获取核心列表

请求

GET /api/{type}/cores

参数

  • type:构建平台类型(如:msl_Official

响应

{
  "success": true,
  "data": [
    {
      "name": "paper",
      "version": "1.21.10",
      "versions": ["1.21.10", "1.21.9", ...],
      "displayName": "Paper",
      "description": "高性能的 Minecraft 服务端"
    }
  ],
  "cached": true
}

2. 创建构建任务

请求

POST /api/build

请求体

{
  "coreName": "paper",
  "version": "1.21.10",
  "type": "msl_Official"
}

响应(缓存命中)

{
  "success": true,
  "message": "已从缓存获取",
  "data": {
    "cached": true,
    "fileName": "paper-1.21.10.zip"
  }
}

响应(需要构建)

{
  "success": true,
  "message": "构建任务已创建",
  "data": {
    "taskId": "e2a4d9f2-2637-4e02-af21-980a44910e44",
    "status": "PROCESSING",
    "message": "任务已创建,正在处理",
    "queued": false
  }
}

错误响应(超限)

{
  "success": false,
  "message": "您已超过部署次数限制1小时内最多 2 次)。请在 14:30:00 后重试。",
  "resetTime": 1729567890000
}

状态码429

3. 查询构建状态

请求

GET /api/build/{taskId}

响应

{
  "success": true,
  "data": {
    "taskId": "e2a4d9f2-2637-4e02-af21-980a44910e44",
    "status": "COMPLETED",
    "progress": 100,
    "downloadUrl": "/download/723d5aa3-79b7-4836-8b93-0cfbe5f188af",
    "expireTime": "2025-10-22 09:30:55",
    "message": "构建完成",
    "activeBuilds": 0,
    "queueSize": 0
  }
}

4. 下载文件

请求

POST /api/download

请求体

{
  "fileName": "paper-1.21.10.zip",
  "taskId": "task-id",
  "coreName": "paper",
  "version": "1.21.10"
}

5. 获取统计数据

请求

GET /api/stats

响应

{
  "success": true,
  "data": [
    {
      "coreName": "paper",
      "totalDownloads": 1250,
      "versions": {
        "1.21.10": 350,
        "1.21.9": 280
      }
    }
  ]
}

工作流程图

用户操作                    前端                     后端                  云端服务
    │                        │                        │                        │
    ├─选择核心和版本────────>│                        │                        │
    │                        ├─获取核心列表─────────>│                        │
    │                        │                        ├─请求核心列表─────────>│
    │                        │                        │<──返回核心列表─────────┤
    │                        │<──返回核心列表─────────┤                        │
    │                        │                        │                        │
    ├─开始构建部署────────>│                        │                        │
    │                        ├─创建构建任务─────────>│                        │
    │                        │                        ├─创建构建任务─────────>│
    │                        │                        │<──返回任务ID/缓存──────┤
    │                        │<──返回任务状态─────────┤                        │
    │                        │                        │                        │
    │                        ├─轮询构建进度─────────>│                        │
    │                        │(每2秒)                 ├─查询任务状态─────────>│
    │                        │                        │<──返回进度─────────────┤
    │<───显示进度和日志─────┤<──返回进度─────────────┤                        │
    │                        │                        │                        │
    │                        │(构建完成)              │                        │
    │                        ├─下载并解压───────────>│                        │
    │                        │                        ├─下载zip文件──────────>│
    │                        │                        │<──返回文件流───────────┤
    │                        │                        ├─解压到部署目录         │
    │                        │                        ├─检测启动命令           │
    │                        │                        ├─清理临时文件           │
    │                        │<──返回部署结果─────────┤                        │
    │<───显示部署完成───────┤                        │                        │
    │                        │                        │                        │
    ├─创建实例──────────────>│                        │                        │
    │                        ├─创建实例请求─────────>│                        │
    │                        │                        ├─创建实例配置           │
    │                        │<──返回创建结果─────────┤                        │
    │<───实例创建成功────────┤                        │                        │

注意事项

1. 部署限制

  • 构建限流1小时内最多2次构建请求
  • 下载链接有效期24小时
  • 临时文件存储:使用 server/temp/ 目录

2. 路径要求

  • 部署路径必须存在或可创建
  • 建议使用绝对路径
  • Windows路径使用反斜杠 \Linux使用正斜杠 /

3. 网络要求

  • 需要能够访问云端服务器
  • 建议稳定的网络连接
  • 下载大文件时请耐心等待

4. 权限要求

  • 需要对部署目录有写入权限
  • 临时目录需要可写
  • 所有API请求需要认证token

故障排除

1. 无法获取核心列表

  • 检查网络连接
  • 确认云端服务器可访问
  • 检查后端日志

2. 构建失败

  • 查看详细日志信息
  • 检查是否超过构建限制
  • 尝试选择其他版本

3. 下载失败

  • 检查磁盘空间
  • 确认部署路径可写
  • 查看后端错误日志

4. 解压失败

  • 确认zip文件完整
  • 检查目标目录权限
  • 查看后端日志详情

5. 启动命令错误

  • 手动修改启动命令
  • 检查解压后的文件列表
  • 确认平台类型正确

最佳实践

  1. 使用默认路径:让系统自动生成部署路径,避免路径冲突
  2. 查看统计信息:选择下载量高的版本,通常更稳定
  3. 保留日志:部署完成后可以截图保存日志,便于排查问题
  4. 测试启动:创建实例后先测试启动,确认一切正常
  5. 定期更新:关注新版本发布,及时更新服务端

更新日志

v1.0.0 (2024-10-23)

  • 初始版本发布
  • 支持我的世界原版Java部署
  • 实现云端构建和缓存机制
  • 自动下载解压功能
  • 智能启动命令检测
  • 实时进度监控
  • 统计数据展示

相关链接

技术支持

如遇到问题或有建议,请通过以下方式联系:

  • 提交 Issue
  • 查看项目文档
  • 联系开发团队

注意:本功能依赖于云端服务的稳定性,建议在生产环境使用前充分测试。