github.com/openimsdk/tools@v0.0.49/utils/mageutil/usage-guide/README_zh_CN.md (about) 1 # mageutil使用指南 2 3 **mageutil** 是基于 mage 构建的一个工具,它提供了跨平台和多架构的编译支持,同时也简化了服务的启动、停止、检测流程。 4 5 ## 使用指南 6 7 ### 准备工作 8 9 1. 将此目录下除README以外的6个文件复制到项目的根目录: 10 2. 项目根目录下需要包含三个目录:`cmd`、`tools`和`config`。 11 - `cmd` 目录专门用于存放那些作为后台服务运行的应用的启动代码。 12 - `tools`目录用于存放那些作为工具应用(不以后台服务形式运行)的启动代码。 13 - `config`目录用于存放配置文件。 14 3. `cmd`和`tools`目录可以包含多层多个子目录。对于包含`main`函数的`main package`文件,需以`main.go`命名。例如: 15 - `cmd/openim-rpc/openim-rpc-msg/main.go` 16 - `tools/check-free-memory/main.go` 17 - 所有代码都应属于同一个项目,子目录不应使用独立的`go.mod`和`go.sum`文件。 18 19 ### 初始化项目 20 21 - 对于Linux/Mac系统,先执行`bootstrap.sh`脚本。 22 - 对于Windows系统,先执行`bootstrap.bat`脚本。 23 24 ### 编译项目 25 26 - 执行`mage`或`mage build`来编译项目。 27 - 编译完成后,二进制文件将生成在`_output/bin/platforms/<操作系统>/<架构>`目录下,其中二进制文件的命名规则为对应的`main.go`所在的目录名。例如: 28 - `_output/bin/platforms/linux/amd64/openim-rpc-msg` 29 - `_output/bin/tools/linux/amd64/check-free-memory` 30 - **注意:** Windows平台的二进制文件会自动添加`.exe`扩展名。 31 32 ### 启动工具和服务 33 34 1. 首先,编辑`start-config.yml`文件,指定服务和工具相关配置,例如: 35 36 ```yaml 37 #cmd服务子目录名: 实例数 38 serviceBinaries: 39 openim-rpc-msg: 2 40 41 #tools工具子目录名 42 toolBinaries: 43 - check-free-memory 44 45 maxFileDescriptors: 10000 46 ``` 47 48 **注意:**服务和工具名与`cmd`和`tools`下的子目录名保持一致 49 50 3. 执行`mage start`来启动服务和工具。 51 52 - 工具将以同步方式执行,如果工具执行失败(退出代码非零),则整个启动过程中断。 53 - 服务将以异步方式启动。 54 55 对于所有工具,将采用以下命令格式启动:`[程序绝对路径] -i 0 -c [配置文件绝对目录]`。 56 57 若服务实例数设置为`n`,则服务将启动`n`个实例,每个实例使用的命令格式为:`[程序路径] -i [实例索引] -c [配置文件目录]`,其中实例索引从`0`到`n-1`。 58 59 **注意**:本项目仅指定了配置文件的路径,并不负责读取配置文件内容。这样做的目的是为了支持使用多个配置文件的情况。程序和配置文件的路径都自动使用绝对路径。 60 61 ### 检查和停止服务 62 63 - 执行`mage check`来检查服务状态和监听的端口。 64 - 执行`mage stop`来停止服务,该命令会向服务发送停止信号。 65 66 --- 67