2024-04-10 14:54:11 +08:00

68 lines
2.9 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.

# mageutil使用指南
**mageutil** 是基于 mage 构建的一个工具,它提供了跨平台和多架构的编译支持,同时也简化了服务的启动、停止、检测流程。
## 使用指南
### 准备工作
1. 将此目录下除README以外的6个文件复制到项目的根目录
2. 项目根目录下需要包含三个目录:`cmd``tools``config`
- `cmd` 目录专门用于存放那些作为后台服务运行的应用的启动代码。
- `tools`目录用于存放那些作为工具应用(不以后台服务形式运行)的启动代码。
- `config`目录用于存放配置文件。
3. `cmd``tools`目录可以包含多层多个子目录。对于包含`main`函数的`main package`文件,需以`main.go`命名。例如:
- `cmd/openim-rpc/openim-rpc-msg/main.go`
- `tools/check-free-memory/main.go`
- 所有代码都应属于同一个项目,子目录不应使用独立的`go.mod``go.sum`文件。
### 初始化项目
- 对于Linux/Mac系统先执行`bootstrap.sh`脚本。
- 对于Windows系统先执行`bootstrap.bat`脚本。
### 编译项目
- 执行`mage``mage build`来编译项目。
- 编译完成后,二进制文件将生成在`_output/bin/platforms/<操作系统>/<架构>`目录下,其中二进制文件的命名规则为对应的`main.go`所在的目录名。例如:
- `_output/bin/platforms/linux/amd64/openim-rpc-msg`
- `_output/bin/tools/linux/amd64/check-free-memory`
- **注意:** Windows平台的二进制文件会自动添加`.exe`扩展名。
### 启动工具和服务
1. 首先,编辑`start-config.yml`文件,指定服务和工具相关配置,例如:
```yaml
#cmd服务子目录名: 实例数
serviceBinaries:
openim-rpc-msg: 2
#tools工具子目录名
toolBinaries:
- check-free-memory
maxFileDescriptors: 10000
```
**注意:**服务和工具名与`cmd`和`tools`下的子目录名保持一致
3. 执行`mage start`来启动服务和工具。
- 工具将以同步方式执行,如果工具执行失败(退出代码非零),则整个启动过程中断。
- 服务将以异步方式启动。
对于所有工具,将采用以下命令格式启动:`[程序绝对路径] -i 0 -c [配置文件绝对目录]`。
若服务实例数设置为`n`,则服务将启动`n`个实例,每个实例使用的命令格式为:`[程序路径] -i [实例索引] -c [配置文件目录]`,其中实例索引从`0`到`n-1`。
**注意**:本项目仅指定了配置文件的路径,并不负责读取配置文件内容。这样做的目的是为了支持使用多个配置文件的情况。程序和配置文件的路径都自动使用绝对路径。
### 检查和停止服务
- 执行`mage check`来检查服务状态和监听的端口。
- 执行`mage stop`来停止服务,该命令会向服务发送停止信号。
---