# goblin **Repository Path**: zshrc/goblin ## Basic Information - **Project Name**: goblin - **Description**: 基于 Supervisor 的远程服务自动化部署工具 - **Primary Language**: Go - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-13 - **Last Updated**: 2025-08-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Goblin 🧌 > 一个使用 Golang 开发的轻量级远程部署工具,专为简化后台服务的自动化部署与管理而生。 Goblin 通过 SSH 连接目标服务器,结合 `supervisor` 实现服务的自动化部署、启动、停止、重启与状态监控,适用于微服务架构或传统后台服务的持续交付场景。 --- ## 🌟 特性 - ✅ **一键部署**:本地命令触发,自动上传代码、更新配置、重启服务。 - ✅ **Supervisor 集成**:利用 Supervisor 管理进程,确保服务高可用。 - ✅ **SSH 安全通信**:基于 SSH 协议与目标服务器交互,无需额外依赖。 - ✅ **配置驱动**:通过 YAML 配置文件定义部署流程,灵活可扩展。 - ✅ **多环境支持**:支持开发、测试、生产等多环境独立配置。 - ✅ **日志输出**:实时显示远程执行日志,便于排查问题。 - ✅ **版本回滚**(可选):支持快速回滚至上一版本。 --- ## ⚠️ 使用前置条件 在使用 Goblin 之前,请确保满足以下条件: ### 1. 远程服务器已安装并配置 Supervisor Goblin 依赖 Supervisor 管理服务进程,请在目标服务器上完成以下配置: ```bash # Ubuntu/Debian sudo apt-get update sudo apt-get install -y supervisor # CentOS/RHEL sudo yum install -y supervisor # 启动并设置开机自启 sudo systemctl enable supervisor sudo systemctl start supervisor ``` 💡 确保 supervisorctl 命令可用。 ### 2. 部署用户权限配置 确保部署用户(如 deploy)有权限操作 Supervisor: ```Bash # 编辑 /etc/supervisor/supervisord.conf [unix_http_server] file=/var/run/supervisor.sock chmod=0700 chown=deploy:deploy ; 假设 deploy 是部署用户 ``` ## 📦 安装 ### 方法一:从源码构建(推荐) ```bash git clone https://gitee.com/zshrc/goblin.git cd goblin go build -o goblin goblin.go 或者 make build-[systemd]-[darwin] sudo mv goblin /usr/local/bin/ ``` --- ## 🚀 使用 ### 🔧 配置参数默认值说明 | 变量名 | 默认值 | 说明 | |----------|----------------|------| | `host` | `"localhost"` | SSH 连接的目标主机地址。默认是 `localhost`,表示如果未指定,则连接本机。在远程部署场景中,通常需要设置为远程服务器的 IP 或域名。 | | `user` | `""`(空) | SSH 登录的用户名。默认使用 `root`,具有最高权限,便于操作系统级服务(如 Supervisor)。生产环境中建议使用普通用户并配置 `sudo` 权限以提高安全性。 | | `password` | `""`(空) | SSH 登录密码。默认为空,表示不使用密码认证。推荐使用 **SSH 密钥认证**(如 `~/.ssh/id_rsa`),更安全且支持免密部署。 | | `path` | `"/opt/app"` | 服务部署到远程服务器的目录路径。`/opt/app` 是一个常见的自定义软件安装路径,适合存放第三方应用。可按实际需求修改。 | | `name` | 无默认值 | 服务在 Supervisor 中的名称(如 `[program:my-service]`),必须由用户通过命令行或配置指定。用于执行 `supervisorctl start/stop/restart `。 | | `bin` | 无默认值 | 本地待部署的可执行文件路径(如 `./bin/my-service`),必须由用户指定。Goblin 会将此文件通过 SCP 上传到远程服务器的 `path` 目录下。 | --- ### 📝 使用示例 ```bash # 基本用法 goblin --host=192.168.1.100 --user=root --password=root --name=myapp --bin=myapp # 高级用法,自定义 Supervisor 配置路径和日志目录 goblin --host=192.168.1.100 --user=root --password=root --name=myapp --bin=myapp --path=/opt/app --spvconf=/etc/supervisor/supervisord.d --spvout=/var/log # 使用 SSH 密钥认证 (暂不支持) # 使用 Makefile 自动化部署(详细参考 Makefile 模版) make deploy # 配置文件方式 (暂不支持) ``` ### 📝 配置文件示例 ```yaml ``` ## ✅ 补充说明 你可以根据实际功能扩展以下内容: - 添加 **CI/CD 集成示例**(如 GitHub Actions) - 添加 **回滚机制实现细节** - 添加 **支持多服务器部署** - 添加 **Web UI 或 API 接口**(未来规划) --- 如果你提供项目的实际功能细节(如是否支持回滚、多服务器、编译等),我可以进一步优化这份文档。希望这份 `README` 能帮助 Goblin 更好地被使用和传播!