Template
feat: add prefixed service initializer and packaged deployment
This commit is contained in:
@@ -52,6 +52,7 @@ go run ./cmd/scheduler # 定时任务调度器
|
||||
go build -ldflags="-s -w" -o server ./cmd/main_program
|
||||
go build -ldflags="-s -w" -o cli ./cmd/cli_control
|
||||
go build -ldflags="-s -w" -o scheduler ./cmd/scheduler
|
||||
go build -ldflags="-s -w" -o initializer .
|
||||
```
|
||||
|
||||
## 模板使用步骤
|
||||
@@ -269,9 +270,20 @@ go build -ldflags="-s -w" -o scheduler ./cmd/scheduler
|
||||
|
||||
### 首次安装(systemd 服务注册)
|
||||
|
||||
`initializer` 已内置 `.env.example`、`install.sh`、启停脚本和 `deploy/*.service`。将它与三个业务二进制放到部署目录后执行:
|
||||
|
||||
```bash
|
||||
chmod +x install.sh start.sh stop.sh restart.sh server cli scheduler
|
||||
sudo bash install.sh
|
||||
chmod +x initializer server cli scheduler
|
||||
sudo ./initializer
|
||||
# 请输入项目前缀(例如 myapp)
|
||||
```
|
||||
|
||||
初始化工具会自动释放部署文件、添加执行权限、把前缀保存到 `.service-prefix`,并在 `.env` 不存在时根据 `.env.example` 自动创建它,随后执行 `install.sh`。已有 `.env` 会被保留,不会覆盖其中的密钥和环境配置。注册出的服务名为 `myapp-server`、`myapp-cli` 和 `myapp-scheduler`。
|
||||
|
||||
无人值守初始化时可直接传入前缀:
|
||||
|
||||
```bash
|
||||
sudo ./initializer -prefix myapp
|
||||
```
|
||||
|
||||
### 日常运维
|
||||
@@ -285,11 +297,11 @@ bash restart.sh # 重启全部
|
||||
单独管理:
|
||||
|
||||
```bash
|
||||
systemctl status server # 主服务状态
|
||||
systemctl status scheduler # 调度器状态
|
||||
systemctl restart scheduler # 只重启调度器
|
||||
journalctl -u server -f # 主服务实时日志
|
||||
journalctl -u scheduler -f # 调度器实时日志
|
||||
systemctl status myapp-server # 主服务状态
|
||||
systemctl status myapp-scheduler # 调度器状态
|
||||
systemctl restart myapp-scheduler # 只重启调度器
|
||||
journalctl -u myapp-server -f # 主服务实时日志
|
||||
journalctl -u myapp-scheduler -f # 调度器实时日志
|
||||
```
|
||||
|
||||
### systemd 服务特性
|
||||
@@ -309,7 +321,9 @@ journalctl -u scheduler -f # 调度器实时日志
|
||||
├── server # HTTP 主服务
|
||||
├── cli # httplog 上报
|
||||
├── scheduler # 定时任务调度器
|
||||
├── initializer # 首次安装工具(内置部署资源)
|
||||
├── .env # 环境配置
|
||||
├── .service-prefix # 初始化时保存的 systemd 服务名前缀
|
||||
├── deploy/
|
||||
│ ├── server.service
|
||||
│ ├── cli.service
|
||||
@@ -322,6 +336,8 @@ journalctl -u scheduler -f # 调度器实时日志
|
||||
└── cron_*.log # 定时任务专用日志
|
||||
```
|
||||
|
||||
CI 会将 `server`、`cli`、`scheduler` 和 `initializer` 打包为 `deployment.tar.gz` 后上传。部署目录由工作流顶部的 `DEPLOY_DIR` 统一配置(默认 `/root`)。压缩包上传完成后,服务器依次执行 `stop.sh`、覆盖解压、添加执行权限和 `start.sh`;启停脚本会读取 `.service-prefix` 操作带项目前缀的三个服务。首次部署前需要先运行一次 `initializer`。
|
||||
|
||||
## 内置功能清单
|
||||
|
||||
- Hertz HTTP 框架 + 路由分组
|
||||
|
||||
Reference in New Issue
Block a user