卸载脚本
This commit is contained in:
286
README.md
286
README.md
@@ -136,6 +136,290 @@ BACKEND_URL=http://192.168.1.100:8080 ./run.sh start
|
||||
- 如果 Git 拉取失败(如网络问题),会使用当前代码继续编译
|
||||
- 如果编译失败,服务不会启动
|
||||
|
||||
## 脚本工具
|
||||
|
||||
项目提供了多个脚本工具,方便安装、卸载、运行、编译和发布。
|
||||
|
||||
### 1. install.sh - 一键安装脚本
|
||||
|
||||
自动安装 LinkMaster 节点端到系统,包括依赖安装、源码编译、systemd 服务配置等。
|
||||
|
||||
**使用方法:**
|
||||
|
||||
```bash
|
||||
# 通过 curl 下载并安装(推荐)
|
||||
curl -fsSL https://gitee.nas.cpolar.cn/yoyo/linkmaster-node/raw/branch/main/install.sh | bash -s -- http://your-backend-server:8080
|
||||
|
||||
# 本地运行安装脚本
|
||||
./install.sh http://your-backend-server:8080
|
||||
|
||||
# 指定分支安装
|
||||
GITHUB_BRANCH=develop curl -fsSL https://gitee.nas.cpolar.cn/yoyo/linkmaster-node/raw/branch/main/install.sh | bash -s -- http://your-backend-server:8080
|
||||
```
|
||||
|
||||
**功能特性:**
|
||||
- 自动检测系统类型和架构(Linux/macOS, amd64/arm64)
|
||||
- 自动检测并配置最快的镜像源(Ubuntu/Debian/CentOS)
|
||||
- 自动安装系统依赖(curl, wget, git, ping, traceroute 等)
|
||||
- 自动安装 Go 环境(优先使用系统包管理器,失败则从官网下载)
|
||||
- 优先从 Releases 下载预编译二进制文件,失败则从源码编译
|
||||
- 自动创建 systemd 服务并配置自启动
|
||||
- 自动配置防火墙规则(开放 2200 端口)
|
||||
- 自动登记节点到后端服务器
|
||||
- 自动启动服务并验证安装
|
||||
|
||||
**安装位置:**
|
||||
- 二进制文件:`/usr/local/bin/linkmaster-node`
|
||||
- 源码目录:`/opt/linkmaster-node`
|
||||
- 服务文件:`/etc/systemd/system/linkmaster-node.service`
|
||||
- 配置文件:`/opt/linkmaster-node/config.yaml`
|
||||
|
||||
### 2. uninstall.sh - 一键卸载脚本
|
||||
|
||||
完全卸载 LinkMaster 节点端,包括停止服务、删除文件、清理配置等。
|
||||
|
||||
**使用方法:**
|
||||
|
||||
```bash
|
||||
# 通过 curl 下载并运行
|
||||
curl -fsSL https://gitee.nas.cpolar.cn/yoyo/linkmaster-node/raw/branch/main/uninstall.sh | bash
|
||||
|
||||
# 本地运行卸载脚本
|
||||
./uninstall.sh
|
||||
|
||||
# 卸载并删除防火墙规则
|
||||
./uninstall.sh --remove-firewall
|
||||
```
|
||||
|
||||
**功能特性:**
|
||||
- 停止并禁用 systemd 服务
|
||||
- 删除 systemd 服务文件和配置目录
|
||||
- 删除二进制文件(`/usr/local/bin/linkmaster-node`)
|
||||
- 删除源码目录(`/opt/linkmaster-node`)
|
||||
- 清理所有残留进程
|
||||
- 重新加载 systemd daemon
|
||||
- 可选:删除防火墙规则(默认保留)
|
||||
|
||||
**注意事项:**
|
||||
- 卸载前会询问确认(交互式环境)
|
||||
- 默认保留防火墙规则,避免影响其他服务
|
||||
- 使用 `--remove-firewall` 参数可删除防火墙规则
|
||||
|
||||
### 3. run.sh - 运行管理脚本
|
||||
|
||||
用于管理节点端的启动、停止、重启、状态查看和日志查看。**每次启动时会自动拉取最新代码并重新编译**。
|
||||
|
||||
**使用方法:**
|
||||
|
||||
```bash
|
||||
# 启动服务(会自动拉取最新代码并编译)
|
||||
./run.sh start
|
||||
|
||||
# 停止服务
|
||||
./run.sh stop
|
||||
|
||||
# 重启服务(会拉取最新代码并重新编译)
|
||||
./run.sh restart
|
||||
|
||||
# 查看运行状态
|
||||
./run.sh status
|
||||
|
||||
# 实时查看日志
|
||||
./run.sh logs
|
||||
|
||||
# 查看完整日志
|
||||
./run.sh logs-all
|
||||
|
||||
# 显示帮助信息
|
||||
./run.sh help
|
||||
|
||||
# 指定后端地址启动
|
||||
BACKEND_URL=http://192.168.1.100:8080 ./run.sh start
|
||||
```
|
||||
|
||||
**功能特性:**
|
||||
- 启动时自动执行 `git pull` 拉取最新代码
|
||||
- 自动执行 `go mod download` 更新依赖
|
||||
- 自动编译生成新的二进制文件
|
||||
- 自动检测端口占用并提示处理
|
||||
- 后台运行并保存 PID 文件
|
||||
- 健康检查验证服务状态
|
||||
- 支持通过环境变量 `BACKEND_URL` 指定后端地址
|
||||
|
||||
**环境变量:**
|
||||
- `BACKEND_URL`: 后端服务地址(默认: `http://localhost:8080`)
|
||||
|
||||
### 4. start-systemd.sh - systemd 启动脚本
|
||||
|
||||
用于 systemd 服务启动,直接运行二进制文件。如果二进制文件不存在,会自动拉取代码并编译。
|
||||
|
||||
**使用场景:**
|
||||
- 由 systemd 服务自动调用
|
||||
- 不需要手动运行
|
||||
|
||||
**功能特性:**
|
||||
- 检查二进制文件是否存在且有效
|
||||
- 如果二进制文件不存在,自动拉取代码并编译
|
||||
- 使用 vendor 目录编译(无需网络连接)
|
||||
- 直接运行二进制文件(systemd 管理进程)
|
||||
|
||||
**注意事项:**
|
||||
- 此脚本由 systemd 服务调用,通常不需要手动运行
|
||||
- 需要确保源码目录存在且是 Git 仓库
|
||||
- 需要 Go 环境已安装并在 PATH 中
|
||||
|
||||
### 5. build-all.sh - 跨平台编译脚本
|
||||
|
||||
编译多个操作系统和架构的二进制文件,支持并行编译。
|
||||
|
||||
**使用方法:**
|
||||
|
||||
```bash
|
||||
# 编译所有平台
|
||||
./build-all.sh
|
||||
|
||||
# 只编译指定平台
|
||||
./build-all.sh -p linux/amd64
|
||||
|
||||
# 编译前清理输出目录
|
||||
./build-all.sh -c
|
||||
|
||||
# 设置并行编译数量
|
||||
./build-all.sh -j 2
|
||||
|
||||
# 设置版本号
|
||||
./build-all.sh -v 1.0.0
|
||||
|
||||
# 只生成不带版本号的文件
|
||||
./build-all.sh -s
|
||||
|
||||
# 列出所有支持的平台
|
||||
./build-all.sh -l
|
||||
|
||||
# 显示帮助信息
|
||||
./build-all.sh -h
|
||||
```
|
||||
|
||||
**支持的平台:**
|
||||
- `linux/amd64` - Linux x86_64
|
||||
- `linux/arm64` - Linux ARM64
|
||||
- `darwin/amd64` - macOS Intel
|
||||
- `darwin/arm64` - macOS Apple Silicon
|
||||
- `windows/amd64` - Windows x86_64
|
||||
- `windows/arm64` - Windows ARM64
|
||||
|
||||
**功能特性:**
|
||||
- 支持并行编译(默认 4 个任务)
|
||||
- 自动生成带版本号和不带版本号的文件
|
||||
- 输出到 `bin/` 目录
|
||||
- 显示编译进度和结果
|
||||
- 支持清理输出目录
|
||||
|
||||
**输出文件:**
|
||||
- `bin/agent-{os}-{arch}` - 不带版本号的二进制文件
|
||||
- `bin/agent-{os}-{arch}-{version}` - 带版本号的二进制文件
|
||||
- Windows 平台会自动添加 `.exe` 扩展名
|
||||
|
||||
### 6. upload.sh - 发布上传脚本
|
||||
|
||||
将编译好的二进制文件上传到 Releases 或通过其他方式发布。
|
||||
|
||||
**使用方法:**
|
||||
|
||||
```bash
|
||||
# 上传到 Gitea Releases(自动从 .git/config 读取仓库信息)
|
||||
./upload.sh -m gitea -t v1.0.0 -v 1.0.0
|
||||
|
||||
# 指定 Gitea 访问令牌
|
||||
./upload.sh -m gitea -t v1.0.0 -v 1.0.0 -T your_token
|
||||
|
||||
# 上传到 GitHub Releases
|
||||
./upload.sh -m github -r owner/repo -t v1.0.0 -v 1.0.0
|
||||
|
||||
# 通过 SCP 上传
|
||||
./upload.sh -m scp -H example.com -u user -d /path/to/release
|
||||
|
||||
# 通过 SCP 上传(指定私钥)
|
||||
./upload.sh -m scp -H example.com -u user -d /path/to/release -k ~/.ssh/id_rsa
|
||||
|
||||
# 通过 FTP 上传
|
||||
./upload.sh -m ftp -H ftp.example.com -u user -d /path/to/release
|
||||
|
||||
# 复制到本地目录
|
||||
./upload.sh -m local -d /path/to/release
|
||||
|
||||
# 只打包不上传
|
||||
./upload.sh --pack-only -v 1.0.0
|
||||
|
||||
# 不上传压缩包,直接上传二进制文件
|
||||
./upload.sh -m scp --no-pack -H example.com -u user -d /path/to/release
|
||||
|
||||
# 显示帮助信息
|
||||
./upload.sh -h
|
||||
```
|
||||
|
||||
**支持的上传方式:**
|
||||
- `gitea` - Gitea Releases(自动从 .git/config 读取仓库信息)
|
||||
- `github` - GitHub Releases(需要 GitHub CLI `gh`)
|
||||
- `scp` - 通过 SCP 上传到远程服务器
|
||||
- `ftp` - 通过 FTP 上传
|
||||
- `local` - 复制到本地目录
|
||||
|
||||
**功能特性:**
|
||||
- 自动打包二进制文件(tar.gz 或 zip)
|
||||
- 自动创建发布说明
|
||||
- 支持指定平台上传
|
||||
- 支持自定义版本号和标签
|
||||
- 支持自定义发布说明
|
||||
- 自动检测并处理已存在的 Release
|
||||
|
||||
**参数说明:**
|
||||
- `-m, --method`: 上传方式(gitea|github|scp|ftp|local)
|
||||
- `-v, --version`: 版本号(默认: 时间戳)
|
||||
- `-t, --tag`: Git 标签(Releases 需要)
|
||||
- `-p, --platform`: 只上传指定平台
|
||||
- `-T, --token`: 访问令牌(Gitea/GitHub)
|
||||
- `-H, --host`: 主机地址(SCP/FTP)
|
||||
- `-u, --user`: 用户名(SCP/FTP)
|
||||
- `-d, --dest`: 目标路径(SCP/FTP/local)
|
||||
- `-k, --key`: 私钥路径(SCP)
|
||||
- `--pack-only`: 只打包不上传
|
||||
- `--no-pack`: 不上传压缩包,直接上传二进制文件
|
||||
|
||||
### 7. vendor.sh - Vendor 依赖打包脚本
|
||||
|
||||
将项目依赖下载到 vendor 目录,客户端克隆后可直接编译,无需网络连接。
|
||||
|
||||
**使用方法:**
|
||||
|
||||
```bash
|
||||
# 运行脚本(会自动下载依赖并创建 vendor 目录)
|
||||
./vendor.sh
|
||||
```
|
||||
|
||||
**功能特性:**
|
||||
- 检查 Go 环境
|
||||
- 配置 Go 代理(使用官方源)
|
||||
- 下载所有依赖包
|
||||
- 创建 vendor 目录
|
||||
- 更新 .gitignore(允许 vendor 目录被提交)
|
||||
- 自动添加到 Git 暂存区
|
||||
|
||||
**使用场景:**
|
||||
- 项目需要离线编译能力
|
||||
- 需要确保依赖版本一致性
|
||||
- 客户端环境网络受限
|
||||
|
||||
**注意事项:**
|
||||
- 需要 Go 环境已安装
|
||||
- vendor 目录会比较大,需要提交到 Git
|
||||
- 编译时使用 `-mod=vendor` 标志
|
||||
|
||||
**编译命令(使用 vendor):**
|
||||
```bash
|
||||
go build -mod=vendor -o agent ./cmd/agent
|
||||
```
|
||||
|
||||
## API
|
||||
|
||||
### POST /api/test
|
||||
@@ -180,5 +464,3 @@ BACKEND_URL=http://192.168.1.100:8080 ./run.sh start
|
||||
### GET /api/health
|
||||
|
||||
健康检查
|
||||
# linkmaster-node
|
||||
# linkmaster-node
|
||||
|
||||
Reference in New Issue
Block a user