diff --git a/config/redis.yml b/config/redis.yml index df4e2148f..26becd887 100644 --- a/config/redis.yml +++ b/config/redis.yml @@ -4,4 +4,4 @@ password: openIM123 enablePipeline: false clusterMode: false db: 0 -MaxRetry: 10 \ No newline at end of file +maxRetry: 10 \ No newline at end of file diff --git a/go.mod b/go.mod index 2d2b652ce..8a0409d99 100644 --- a/go.mod +++ b/go.mod @@ -35,6 +35,7 @@ require ( github.com/kelindar/bitmap v1.5.2 github.com/likexian/gokit v0.25.13 github.com/magefile/mage v1.15.0 + github.com/openimsdk/gomake v0.0.1 github.com/redis/go-redis/v9 v9.4.0 github.com/robfig/cron/v3 v3.0.1 github.com/shirou/gopsutil v3.21.11+incompatible diff --git a/go.sum b/go.sum index 6e6590a96..489c1af4c 100644 --- a/go.sum +++ b/go.sum @@ -279,6 +279,8 @@ github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1y github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= github.com/onsi/gomega v1.18.1 h1:M1GfJqGRrBrrGGsbxzV5dqM2U2ApXefZCQpkukxYRLE= github.com/onsi/gomega v1.18.1/go.mod h1:0q+aL8jAiMXy9hbwj2mr5GziHiwhAIQpFmmtT5hitRs= +github.com/openimsdk/gomake v0.0.1 h1:ll33pk6kOj1qrPIwjhN//mmoSFIQKtwhCbHMZ6ZgBIU= +github.com/openimsdk/gomake v0.0.1/go.mod h1:1vue3qXSfnlEToEtmERuO5KnWhD4+fMzuZSqyzddCLo= github.com/openimsdk/protocol v0.0.61 h1:l8B93YQfUyPBOrAwhdD4QNLY65ON6H0ydJi1S+hG+t8= github.com/openimsdk/protocol v0.0.61/go.mod h1:OZQA9FR55lseYoN2Ql1XAHYKHJGu7OMNkUbuekrKCM8= github.com/openimsdk/tools v0.0.47-alpha.17 h1:ZexqUpIXd0JzGm7rCOJ95XXWQWhUoZoCm8uwZixDsoQ= diff --git a/magefile.go b/magefile.go index 0e4821cfd..98ffa48f3 100644 --- a/magefile.go +++ b/magefile.go @@ -4,7 +4,7 @@ package main import ( - "github.com/openimsdk/open-im-server/v3/pkg/util/mageutil" + "github.com/openimsdk/gomake/mageutil" "os" "strings" ) @@ -25,7 +25,12 @@ func Build() { } func Start() { - setMaxOpenFiles() + mageutil.InitForSSC() + err := setMaxOpenFiles() + if err != nil { + mageutil.PrintRed("setMaxOpenFiles failed " + err.Error()) + os.Exit(1) + } mageutil.StartToolsAndServices() } diff --git a/magefile_unix.go b/magefile_unix.go index 76c6cad07..ff6b6de4e 100644 --- a/magefile_unix.go +++ b/magefile_unix.go @@ -4,7 +4,7 @@ package main import ( - "github.com/openimsdk/tools/utils/mageutil" + "github.com/openimsdk/gomake/mageutil" "syscall" ) diff --git a/pkg/util/mageutil/usage-guide/README_zh_CN.md b/pkg/util/mageutil/usage-guide/README_zh_CN.md deleted file mode 100644 index dbadf71d1..000000000 --- a/pkg/util/mageutil/usage-guide/README_zh_CN.md +++ /dev/null @@ -1,67 +0,0 @@ -# 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`来停止服务,该命令会向服务发送停止信号。 - ---- - diff --git a/pkg/util/mageutil/usage-guide/bootstrap.bat b/pkg/util/mageutil/usage-guide/bootstrap.bat deleted file mode 100644 index 819f19c87..000000000 --- a/pkg/util/mageutil/usage-guide/bootstrap.bat +++ /dev/null @@ -1,31 +0,0 @@ -@echo off -SETLOCAL - -mage -version >nul 2>&1 -IF %ERRORLEVEL% EQU 0 ( - echo Mage is already installed. - GOTO DOWNLOAD -) - -go version >nul 2>&1 -IF NOT %ERRORLEVEL% EQU 0 ( - echo Go is not installed. Please install Go and try again. - exit /b 1 -) - -echo Installing Mage... -go install github.com/magefile/mage@latest - -mage -version >nul 2>&1 -IF NOT %ERRORLEVEL% EQU 0 ( - echo Mage installation failed. - echo Please ensure that %GOPATH%/bin is in your PATH. - exit /b 1 -) - -echo Mage installed successfully. - -:DOWNLOAD -go mod download - -ENDLOCAL diff --git a/pkg/util/mageutil/usage-guide/bootstrap.sh b/pkg/util/mageutil/usage-guide/bootstrap.sh deleted file mode 100644 index f79cd1f11..000000000 --- a/pkg/util/mageutil/usage-guide/bootstrap.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash - -if [[ ":$PATH:" == *":$HOME/.local/bin:"* ]]; then - TARGET_DIR="$HOME/.local/bin" -else - TARGET_DIR="/usr/local/bin" - echo "Using /usr/local/bin as the installation directory. Might require sudo permissions." -fi - -if ! command -v mage &> /dev/null; then - echo "Installing Mage to $TARGET_DIR ..." - GOBIN=$TARGET_DIR go install github.com/magefile/mage@latest -fi - -if ! command -v mage &> /dev/null; then - echo "Mage installation failed." - echo "Please ensure that $TARGET_DIR is in your \$PATH." - exit 1 -fi - -echo "Mage installed successfully." - -go mod download diff --git a/pkg/util/mageutil/usage-guide/magefile.go b/pkg/util/mageutil/usage-guide/magefile.go deleted file mode 100644 index 47a841297..000000000 --- a/pkg/util/mageutil/usage-guide/magefile.go +++ /dev/null @@ -1,38 +0,0 @@ -//go:build mage -// +build mage - -package main - -import ( - "github.com/openimsdk/tools/utils/mageutil" - "os" - "strings" -) - -var Default = Build - -func Build() { - platforms := os.Getenv("PLATFORMS") - if platforms == "" { - platforms = mageutil.DetectPlatform() - } - - for _, platform := range strings.Split(platforms, " ") { - mageutil.CompileForPlatform(platform) - } - - mageutil.PrintGreen("Compilation complete.") -} - -func Start() { - setMaxOpenFiles() - mageutil.StartToolsAndServices() -} - -func Stop() { - mageutil.StopAndCheckBinaries() -} - -func Check() { - mageutil.CheckAndReportBinariesStatus() -} diff --git a/pkg/util/mageutil/usage-guide/magefile_unix.go b/pkg/util/mageutil/usage-guide/magefile_unix.go deleted file mode 100644 index 76c6cad07..000000000 --- a/pkg/util/mageutil/usage-guide/magefile_unix.go +++ /dev/null @@ -1,20 +0,0 @@ -//go:build mage && !windows -// +build mage,!windows - -package main - -import ( - "github.com/openimsdk/tools/utils/mageutil" - "syscall" -) - -func setMaxOpenFiles() error { - var rLimit syscall.Rlimit - err := syscall.Getrlimit(syscall.RLIMIT_NOFILE, &rLimit) - if err != nil { - return err - } - rLimit.Max = uint64(mageutil.MaxFileDescriptors) - rLimit.Cur = uint64(mageutil.MaxFileDescriptors) - return syscall.Setrlimit(syscall.RLIMIT_NOFILE, &rLimit) -} diff --git a/pkg/util/mageutil/usage-guide/magefile_windows.go b/pkg/util/mageutil/usage-guide/magefile_windows.go deleted file mode 100644 index 7441bfd9c..000000000 --- a/pkg/util/mageutil/usage-guide/magefile_windows.go +++ /dev/null @@ -1,8 +0,0 @@ -//go:build mage -// +build mage - -package main - -func setMaxOpenFiles() error { - return nil -} diff --git a/pkg/util/mageutil/usage-guide/start-config.yml b/pkg/util/mageutil/usage-guide/start-config.yml deleted file mode 100644 index 8c9f3b69d..000000000 --- a/pkg/util/mageutil/usage-guide/start-config.yml +++ /dev/null @@ -1,8 +0,0 @@ -serviceBinaries: - openim-no-port: 1 - openim-test: 1 - -toolBinaries: - - check-free-memory - -maxFileDescriptors: 10000