diff --git a/docs/离线部署文档.md b/docs/离线部署文档.md index 2a795b5..fd3bd8a 100644 --- a/docs/离线部署文档.md +++ b/docs/离线部署文档.md @@ -32,18 +32,33 @@ | 组件 | 版本 | 说明 | |------|------|------| -| Go | 1.23+ | 运行时/编译环境 | -| chi | v5.2.3 | Web 框架 | -| cors | v1.2.2 | CORS 中间件 | -| uuid | v1.6.0 | UUID 生成库 | +| Go | 1.23+ | **编译环境(仅构建机需要)** | +| chi | v5.2.3 | Web 框架(已静态编译到二进制) | +| cors | v1.2.2 | CORS 中间件(已静态编译到二进制) | +| uuid | v1.6.0 | UUID 生成库(已静态编译到二进制) | + +> **注意**: Go 编译生成的是**静态链接的二进制文件**,目标机器(生产环境)**不需要**安装 Go 运行时,只需要 Linux 内核即可运行。 ### 1.3 部署流程概览 ``` -┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ -│ 联网机器准备 │ --> │ 打包到光盘 │ --> │ 离线环境部署 │ -│ (下载依赖/编译) │ │ /USB/ISO │ │ (Ubuntu 22.04) │ -└─────────────────┘ └─────────────────┘ └─────────────────┘ +┌──────────────────────────────────────────────────────────────────────┐ +│ 联网机器(构建环境) │ +│ ┌──────────────┐ ┌──────────────┐ ┌──────────────────────┐ │ +│ │ 安装 Go 1.23 │ -> │ 编译二进制 │ -> │ 打包部署包 │ │ +│ │ 下载依赖 │ │ managerd │ │ (包含静态二进制文件) │ │ +│ └──────────────┘ └──────────────┘ └──────────────────────┘ │ +└──────────────────────────────────────────────────────────────────────┘ + │ + ▼ (拷贝到光盘/USB) +┌──────────────────────────────────────────────────────────────────────┐ +│ 离线机器(生产环境) │ +│ ┌──────────────────────────────────────────────────────────────┐ │ +│ │ 无需 Go 运行时!直接运行编译好的静态二进制文件 │ │ +│ │ - ./scripts/3588admin install │ │ +│ │ - ./scripts/3588admin start │ │ +│ └──────────────────────────────────────────────────────────────┘ │ +└──────────────────────────────────────────────────────────────────────┘ ``` --- diff --git a/scripts/deploy/Manual.md b/scripts/deploy/Manual.md index 25a33fb..51efab3 100644 --- a/scripts/deploy/Manual.md +++ b/scripts/deploy/Manual.md @@ -361,17 +361,34 @@ sudo systemctl disable 3588admin # 禁用自启 ### 场景1: 首次部署 +> **说明**: 以下流程在联网机器上构建部署包,然后拷贝到离线生产环境安装。目标机器**不需要** Go 运行时。 + ```bash -# 在联网机器上 +# ========== 在联网机器上(构建环境)========== cd 3588AdminBackend/scripts/deploy + +# 构建离线部署包(包含编译好的静态二进制文件) ./build-offline-package.sh -# 复制到光盘/USB,挂载到生产服务器 +# 输出: build/3588AdminBackend-离线部署包-YYYYMMDD.tar.gz -# 在生产服务器上 +# 复制到光盘/USB/ISO,然后挂载到生产服务器 + +# ========== 在生产服务器上(离线环境)========== +# 解压部署包 +tar -xzf 3588AdminBackend-离线部署包-*.tar.gz +cd 3588AdminBackend-离线部署包-*/ + +# 检查环境(无需 Go 运行时) sudo ./scripts/3588admin check + +# 安装(无需 Go 运行时) sudo ./scripts/3588admin install -sudo nano /opt/3588admin/config/managerd.json # 修改配置 + +# 修改配置 +sudo nano /opt/3588admin/config/managerd.json + +# 启动服务 sudo 3588admin start sudo 3588admin status ``` diff --git a/scripts/deploy/build-offline-package.sh b/scripts/deploy/build-offline-package.sh index c2184ef..ae7fbbd 100644 --- a/scripts/deploy/build-offline-package.sh +++ b/scripts/deploy/build-offline-package.sh @@ -20,9 +20,10 @@ PACKAGE_DIR="$BUILD_DIR/$PACKAGE_NAME" # Go版本检测 GO_VERSION=$(go version 2>/dev/null | awk '{print $3}') -# 检查Go +# 检查Go(仅在构建机上需要) command -v go >/dev/null 2>&1 || { echo -e "${RED}错误: 未找到 Go 命令${NC}" + echo "请在联网的构建机上运行此脚本" exit 1 } @@ -31,6 +32,9 @@ echo "项目目录: $PROJECT_DIR" echo "构建目录: $BUILD_DIR" echo "Go 版本: $GO_VERSION" echo "" +echo -e "${YELLOW}说明: 此脚本在联网机器上运行,生成包含静态二进制文件的离线部署包${NC}" +echo -e "${YELLOW} 目标机器(生产环境)无需安装 Go 运行时${NC}" +echo "" # 清理旧的构建 echo "[1/7] 清理旧构建..." @@ -118,6 +122,11 @@ cat > "$PACKAGE_DIR/README-离线安装.txt" << 'EOF' 【系统要求】 - Ubuntu 22.04.5 LTS (x86_64) - root 权限 + +【重要说明】 + ✓ 本部署包已包含静态编译的二进制文件 + ✓ 目标机器无需安装 Go 运行时 + ✓ 无需互联网连接(纯离线安装) 【安装步骤】