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

2.9 KiB
Raw Blame History

mageutil使用指南

mageutil 是基于 mage 构建的一个工具,它提供了跨平台和多架构的编译支持,同时也简化了服务的启动、停止、检测流程。

使用指南

准备工作

  1. 将此目录下除README以外的6个文件复制到项目的根目录
  2. 项目根目录下需要包含三个目录:cmdtoolsconfig
    • cmd 目录专门用于存放那些作为后台服务运行的应用的启动代码。
    • tools目录用于存放那些作为工具应用(不以后台服务形式运行)的启动代码。
    • config目录用于存放配置文件。
  3. cmdtools目录可以包含多层多个子目录。对于包含main函数的main package文件,需以main.go命名。例如:
    • cmd/openim-rpc/openim-rpc-msg/main.go
    • tools/check-free-memory/main.go
    • 所有代码都应属于同一个项目,子目录不应使用独立的go.modgo.sum文件。

初始化项目

  • 对于Linux/Mac系统先执行bootstrap.sh脚本。
  • 对于Windows系统先执行bootstrap.bat脚本。

编译项目

  • 执行magemage 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文件,指定服务和工具相关配置,例如:

    #cmd服务子目录名: 实例数
    serviceBinaries:
        openim-rpc-msg: 2
    
    #tools工具子目录名
    toolBinaries:
        - check-free-memory
    
    maxFileDescriptors: 10000
    

    **注意:**服务和工具名与cmdtools下的子目录名保持一致

  2. 执行mage start来启动服务和工具。

    • 工具将以同步方式执行,如果工具执行失败(退出代码非零),则整个启动过程中断。
    • 服务将以异步方式启动。

对于所有工具,将采用以下命令格式启动:[程序绝对路径] -i 0 -c [配置文件绝对目录]

若服务实例数设置为n,则服务将启动n个实例,每个实例使用的命令格式为:[程序路径] -i [实例索引] -c [配置文件目录],其中实例索引从0n-1

注意:本项目仅指定了配置文件的路径,并不负责读取配置文件内容。这样做的目的是为了支持使用多个配置文件的情况。程序和配置文件的路径都自动使用绝对路径。

检查和停止服务

  • 执行mage check来检查服务状态和监听的端口。
  • 执行mage stop来停止服务,该命令会向服务发送停止信号。