safesight-control/docs/离线部署文档.md
tian 46f264d4d4 refactor: rebrand to SafeSight Control
- Rename binary: managerd → safesightd
- Rename config: managerd.json → safesightd.json
- Update Go module: 3588AdminBackend → safesight-control
- Update all import paths and references
- Rename scripts and deploy files
2026-07-17 11:00:12 +08:00

593 lines
15 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.

# SafeSight Control 离线部署文档
> **目标环境**: Ubuntu 22.04.5 LTS (离线环境,无法连接互联网)
> **部署方式**: 在 Windows 上交叉编译,上传安装包到 Ubuntu 进行离线部署
> **版本**: V2.1 (Windows 构建版)
---
## 目录
1. [部署概述](#1-部署概述)
2. [准备环境Windows](#2-准备环境windows)
3. [构建步骤Windows](#3-构建步骤windows)
4. [离线安装Ubuntu](#4-离线安装ubuntu)
5. [验证与启动](#5-验证与启动)
6. [常见问题排查](#6-常见问题排查)
---
## 1. 部署概述
### 1.1 项目简介
SafeSight Control 是 Orange Pi 3588 媒体服务器的后台管理端,提供以下功能:
- 设备发现与注册管理
- 设备配置下发与批量任务管理
- 代理调用设备端 API
- SSE 实时任务进度推送
### 1.2 技术栈
| 组件 | 版本 | 说明 |
|------|------|------|
| Go | 1.23+ | **编译环境(仅 Windows 构建机需要)** |
| chi | v5.2.3 | Web 框架(已静态编译到二进制) |
| cors | v1.2.2 | CORS 中间件(已静态编译到二进制) |
| uuid | v1.6.0 | UUID 生成库(已静态编译到二进制) |
> **注意**: Go 编译生成的是**静态链接的二进制文件**目标机器Ubuntu 生产环境)**不需要**安装 Go 运行时,只需要 Linux 内核即可运行。
### 1.3 部署流程概览
```
┌──────────────────────────────────────────────────────────────────────┐
│ Windows构建环境
│ ┌──────────────────────────────────────────────────────────────┐ │
│ │ 1. 安装 Go 1.23+ │ │
│ │ 2. 运行 build-windows.ps1 │ │
│ │ 3. 生成 SafeSight Control-离线部署包-YYYYMMDD.tar.gz │ │
│ └──────────────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────────────┘
▼ (上传到 Ubuntu 服务器)
┌──────────────────────────────────────────────────────────────────────┐
│ Ubuntu生产环境
│ ┌──────────────────────────────────────────────────────────────┐ │
│ │ 无需 Go 运行时!直接运行编译好的静态二进制文件 │ │
│ │ - tar -xzf SafeSight Control-离线部署包-*.tar.gz │ │
│ │ - sudo ./scripts/3588admin install │ │
│ │ - sudo ./scripts/3588admin start │ │
│ └──────────────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────────────┘
```
---
## 2. 准备环境Windows
### 2.1 系统要求
- **操作系统**: Windows 10/11 或 Windows Server 2019+
- **磁盘空间**: 至少 1GB 可用空间
- **Go 版本**: 1.23.3 或更高
- **网络**: 可访问互联网(下载 Go 依赖)
### 2.2 安装 Go 编译环境
1. **下载 Go 安装包**
- 访问 https://go.dev/dl/
- 下载 `go1.23.3.windows-amd64.msi`
2. **安装 Go**
- 双击 MSI 文件,按向导安装
- 默认安装到 `C:\Program Files\Go\`
- 安装程序会自动配置 PATH
3. **验证安装**
```powershell
# 打开 PowerShell 或 CMD
go version
# 输出: go version go1.23.3 windows/amd64
```
### 2.3 准备项目源码
将项目源码复制到 Windows 机器上,例如:
```
C:\Users\YourName\SafeSight Control\
```
目录结构应包含:
```
SafeSight Control/
├── cmd/
│ └── safesightd/
├── internal/
├── scripts/
│ └── deploy/
│ ├── 3588admin # 管理脚本
│ ├── 3588admin.service # Systemd 服务
│ └── build-windows.ps1 # Windows 构建脚本
├── templates/
├── go.mod
└── go.sum
```
---
## 3. 构建步骤Windows
### 3.1 运行构建脚本
打开 PowerShell进入项目目录
```powershell
# 进入项目目录
cd C:\Users\YourName\SafeSight Control\scripts\deploy
# 执行构建脚本
.\build-windows.ps1
```
或一行命令:
```powershell
& "C:<Users>YourName<SafeSight Control<scripts>deploy<build-windows.ps1"
```
### 3.2 构建输出
构建完成后,会在 `build\` 目录下生成:
```
SafeSight Control-离线部署包-YYYYMMDD.tar.gz
```
构建输出示例:
```
========== SafeSight Control Windows 构建 ==========
项目目录: C:<Users>YourName<SafeSight Control
构建目录: C:<Users>YourName<SafeSight Control<build
Go 版本: go version go1.23.3 windows/amd64
[1/6] 清理旧构建...
[2/6] 创建目录结构...
[3/6] 交叉编译 Linux AMD64 版本...
编译成功
[4/6] 复制配置文件...
[5/6] 复制部署脚本...
[6/6] 复制文档...
打包...
========== 构建完成 ==========
输出文件:
SafeSight Control-离线部署包-20260225.tar.gz (12.34 MB)
部署包位置: C:<Users>YourName<SafeSight Control<build<SafeSight Control-离线部署包-20260225.tar.gz
使用说明:
1. 将 SafeSight Control-离线部署包-20260225.tar.gz 上传到 Ubuntu 服务器
2. 解压并运行: sudo ./scripts/3588admin install
```
### 3.3 手动打包(如不使用脚本)
如果 PowerShell 脚本执行失败,可以手动操作:
```powershell
# 1. 进入项目目录
cd C:<Users>YourName<SafeSight Control
# 2. 交叉编译 Linux 版本
$env:GOOS = "linux"
$env:GOARCH = "amd64"
go build -ldflags="-s -w" -o safesightd-linux-amd64 .\cmd\safesightd
# 3. 创建部署目录
mkdir build<3588admin-deploy<bin
mkdir build<3588admin-deploy<config
mkdir build<3588admin-deploy<scripts
# 4. 复制文件
copy safesightd-linux-amd64 build<3588admin-deploy<bin<safesightd
copy scripts>deploy<3588admin build<3588admin-deploy<scripts<
copy scripts>deploy<3588admin.service build<3588admin-deploy<scripts<
copy safesightd.json build<3588admin-deploy<config<safesightd.json.example
# 5. 打包
cd build
tar -czf SafeSight Control-离线部署包-$(Get-Date -Format 'yyyyMMdd').tar.gz 3588admin-deploy<
```
### 3.4 上传到 Ubuntu 服务器
使用 SCP、FTP 或任何文件传输工具将部署包上传到 Ubuntu
```powershell
# 使用 scp如果 Windows 有 OpenSSH
scp .\build<SafeSight Control-离线部署包-*.tar.gz user@ubuntu-server:/tmp/
# 或使用 WinSCP、FileZilla 等图形化工具
```
---
## 4. 离线安装Ubuntu
> **环境**: Ubuntu 22.04.5 LTS无网络连接
### 4.1 解压部署包
```bash
# 进入上传目录
cd /tmp
# 解压
tar -xzf SafeSight Control-离线部署包-*.tar.gz
# 进入部署目录
cd SafeSight Control-离线部署包-*/
# 查看内容
ls -la
```
### 4.2 执行安装
```bash
# 检查环境(可选但推荐)
sudo ./scripts/3588admin check
# 执行安装
sudo ./scripts/3588admin install
# 或指定自定义安装目录
# sudo ./scripts/3588admin install /usr/local/3588admin
```
安装脚本会自动完成:
- 检查 root 权限
- 复制文件到安装目录
- 设置执行权限
- 创建配置文件
- 创建命令快捷方式(`3588admin-start`, `3588admin-stop`, `3588admin-status`
- 安装 Systemd 服务(可选)
### 4.3 配置 Systemd 服务(可选但推荐)
```bash
# 复制服务文件
sudo cp /opt/3588admin/scripts/3588admin.service /etc/systemd/system/
# 重新加载 systemd
sudo systemctl daemon-reload
# 设置开机自启
sudo systemctl enable 3588admin
# 启动服务
sudo systemctl start 3588admin
# 查看状态
sudo systemctl status 3588admin
```
---
## 5. 验证与启动
### 5.1 修改配置文件
```bash
# 编辑配置文件
sudo nano /opt/3588admin/config/safesightd.json
```
**关键配置项说明**
```json
{
"listen": "0.0.0.0:18080", // HTTP API 监听地址0.0.0.0 允许外部访问)
"discovery_port": 35688, // UDP 发现端口
"discovery_timeout_ms": 1200, // 发现超时时间
"offline_after_ms": 10000, // 设备离线判定时间
"agent_token": "CHANGE_ME", // !!! 必须修改 !!! 与设备端通信的 Token
"concurrency": 5 // 批量任务并发数
}
```
**配置建议**
- `listen`: 如果前端通过本地访问,保持 `127.0.0.1:18080`;如果需要外部访问,改为 `0.0.0.0:18080`
- `agent_token`: **必须修改为安全的随机字符串**,与设备端配置的 token 保持一致
### 5.2 启动服务
**方式1: 使用管理脚本(推荐)**
```bash
# 启动
sudo 3588admin start
# 查看状态
sudo 3588admin status
# 停止
sudo 3588admin stop
# 重启
sudo 3588admin restart
```
**方式2: 使用快捷命令**
```bash
# 启动
sudo 3588admin-start
# 查看状态
sudo 3588admin-status
# 停止
sudo 3588admin-stop
```
**方式3: 使用 Systemd**
```bash
sudo systemctl start 3588admin
sudo systemctl status 3588admin
```
### 5.3 验证服务
```bash
# 检查进程
ps aux | grep safesightd
# 检查端口监听
sudo netstat -tlnp | grep 18080
# 或
sudo ss -tlnp | grep 18080
# 测试 API
curl http://127.0.0.1:18080/api/devices
# 查看日志
tail -f /opt/3588admin/logs/safesightd.log
```
### 5.4 防火墙配置
```bash
# 开放 HTTP API 端口(如需外部访问)
sudo ufw allow 18080/tcp
# 开放 UDP 发现端口(必须)
sudo ufw allow 35688/udp
# 重新加载防火墙
sudo ufw reload
```
---
## 6. 常见问题排查
### 6.1 Windows 构建失败
**问题**: 执行 `build-windows.ps1` 提示权限不足
**解决**:
```powershell
# 以管理员身份运行 PowerShell
# 右键点击 PowerShell -> 以管理员身份运行
# 或修改执行策略(临时)
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process
.\build-windows.ps1
```
**问题**: `tar` 命令不存在
**解决**: Windows 10/11 内置 tar如果找不到使用 7-Zip 或其他工具手动打包。
### 6.2 Ubuntu 上启动失败
**问题**: 执行 start 命令提示启动失败
**排查步骤**:
```bash
# 1. 检查二进制文件架构是否匹配
file /opt/3588admin/bin/safesightd
# 应输出: ELF 64-bit LSB executable, x86-64
# 2. 直接运行查看错误信息
/opt/3588admin/bin/safesightd -config /opt/3588admin/config/safesightd.json
# 3. 检查配置文件格式
python3 -m json.tool /opt/3588admin/config/safesightd.json
```
### 6.3 端口被占用
**问题**: 提示端口 18080 已被占用
**解决**:
```bash
# 查找占用端口的进程
sudo lsof -i :18080
# 或
sudo netstat -tlnp | grep 18080
# 修改配置文件使用其他端口
sudo nano /opt/3588admin/config/safesightd.json
# 修改 "listen" 为 "127.0.0.1:18081" 或其他端口
```
### 6.4 无法发现设备
**问题**: 设备发现功能不工作
**排查**:
```bash
# 检查 UDP 端口监听
sudo netstat -ulnp | grep 35688
# 检查防火墙
sudo ufw status | grep 35688
# 检查网络接口是否有权限发送广播
# 可能需要以 root 运行
# 检查设备端是否配置了正确的发现端口和 token
```
### 6.5 权限问题
**问题**: 提示 Permission denied
**解决**:
```bash
# 修复权限
sudo chmod +x /opt/3588admin/bin/safesightd
sudo chmod +x /opt/3588admin/scripts/3588admin
# 确保以 root 运行
sudo 3588admin start
```
### 6.6 日志查看
```bash
# 实时查看日志
tail -f /opt/3588admin/logs/safesightd.log
# 查看最近 100 行
tail -n 100 /opt/3588admin/logs/safesightd.log
# 搜索错误信息
grep -i error /opt/3588admin/logs/safesightd.log
```
---
## 附录
### A. 目录结构参考
**Windows 构建机**
```
C:<Users>YourName<SafeSight Control<
├── build< # 构建输出
│ └── SafeSight Control-离线部署包-20260225<
│ ├── bin<
│ │ └── safesightd # Linux 静态二进制文件
│ ├── config<
│ ├── scripts<
│ │ └── 3588admin # 管理脚本
│ ├── docs<
│ └── README-离线安装.txt
├── scripts>deploy<
│ ├── 3588admin
│ ├── 3588admin.service
│ └── build-windows.ps1 # Windows 构建脚本
├── cmd<
├── internal<
└── go.mod
```
**Ubuntu 生产环境**
```
/opt/3588admin/
├── bin/
│ └── safesightd # 主程序Windows 交叉编译生成)
├── config/
│ └── safesightd.json # 配置文件
├── logs/
│ └── safesightd.log # 运行日志
├── scripts/
│ ├── 3588admin # 统一管理脚本
│ └── 3588admin.service # 服务文件(复制用)
└── systemd/ # (如安装服务)
```
### B. 管理脚本命令速查
```bash
# 环境检查
sudo 3588admin check
# 安装
sudo 3588admin install [目录]
# 启动/停止/重启
sudo 3588admin start
sudo 3588admin stop
sudo 3588admin restart
# 查看状态
sudo 3588admin status
# 升级
sudo 3588admin upgrade [目录]
# 卸载
sudo 3588admin uninstall [目录]
# 帮助
3588admin help
```
### C. 升级步骤
```bash
# 1. 停止服务
sudo 3588admin stop
# 或
sudo systemctl stop 3588admin
# 2. 备份配置
cp /opt/3588admin/config/safesightd.json ~/safesightd.json.bak
# 3. 在 Windows 上重新构建新版本
# 运行 build-windows.ps1
# 4. 上传到 Ubuntu 并执行升级
sudo ./scripts/3588admin upgrade
# 5. 验证升级
sudo 3588admin status
```
### D. 完全卸载
```bash
# 方式1: 使用管理脚本
sudo 3588admin uninstall
# 方式2: 手动卸载
sudo 3588admin stop
sudo systemctl stop 3588admin 2>/dev/null || true
sudo systemctl disable 3588admin 2>/dev/null || true
sudo rm -f /etc/systemd/system/3588admin.service
sudo rm -rf /opt/3588admin
sudo rm -f /usr/local/bin/3588admin*
sudo systemctl daemon-reload
echo "卸载完成"
```
---
**文档版本**: 2.1 (Windows 构建版)
**最后更新**: 2026-02-25
**适用版本**: SafeSight Control V1.0+