diff --git a/deployments/templates/init/openim-api.service b/deployments/templates/init/openim-api.service index af1fb477d..dba018b89 100644 --- a/deployments/templates/init/openim-api.service +++ b/deployments/templates/init/openim-api.service @@ -1,5 +1,6 @@ [Unit] Description=OPENIM OPENIM API +Documentation=Control interface for the OpenIM API service. Documentation=https://github.com/OpenIMSDK/Open-IM-Server/blob/main/deployment/init/README.md [Service] diff --git a/deployments/templates/init/openim-cmdutils.service b/deployments/templates/init/openim-cmdutils.service index b039b80a9..f96976a89 100644 --- a/deployments/templates/init/openim-cmdutils.service +++ b/deployments/templates/init/openim-cmdutils.service @@ -1,5 +1,6 @@ [Unit] Description=OPENIM OPENIM CMDUTILS +Documentation=Utility toolkit for common OpenIM command-line operations. Documentation=https://github.com/OpenIMSDK/Open-IM-Server/blob/main/deployment/init/README.md [Service] diff --git a/deployments/templates/init/openim-crontask.service b/deployments/templates/init/openim-crontask.service index 50241b3e4..9f1a60898 100644 --- a/deployments/templates/init/openim-crontask.service +++ b/deployments/templates/init/openim-crontask.service @@ -1,5 +1,6 @@ [Unit] Description=OPENIM OPENIM CRONTASK +Documentation=Manages the OpenIM CronTask service, with both direct and systemctl installation methods. Documentation=https://github.com/OpenIMSDK/Open-IM-Server/blob/main/deployment/init/README.md [Service] diff --git a/deployments/templates/init/openim-push.service b/deployments/templates/init/openim-push.service index f3e5a2d42..b2fdc237c 100644 --- a/deployments/templates/init/openim-push.service +++ b/deployments/templates/init/openim-push.service @@ -1,12 +1,13 @@ [Unit] Description=OPENIM OPENIM PUSH +Documentation=Interface for controlling the OpenIM Push Notification service. Documentation=https://github.com/OpenIMSDK/Open-IM-Server/blob/main/deployment/init/README.md [Service] WorkingDirectory=${OPENIM_DATA_DIR}/openim-push ExecStartPre=/usr/bin/mkdir -p ${OPENIM_DATA_DIR}/openim-push ExecStartPre=/usr/bin/mkdir -p ${OPENIM_LOG_DIR} -ExecStart=${OPENIM_INSTALL_DIR}/bin/openim-push --config=${OPENIM_CONFIG_DIR}/openim-push.yaml +ExecStart=${OPENIM_INSTALL_DIR}/bin/openim-push --port ${OPENIM_PUSH_PORT} --prometheus_port ${PUSH_PROM_PORT} Restart=always RestartSec=5 StartLimitInterval=0 diff --git a/scripts/README.md b/scripts/README.md index 986de0141..508a1631e 100644 --- a/scripts/README.md +++ b/scripts/README.md @@ -73,7 +73,7 @@ scripts/ │ ├── swagger.mk # Make rules for swagger documentation │ └── tools.mk # Make rules for tools and utilities ├── mongo-init.sh # Script to initialize MongoDB -├── msg_gateway_start.sh # Script to start message gateway service +├── openim-msggateway.sh # Script to start message gateway service ├── msg_transfer_start.sh # Script to start message transfer service ├── path_info.sh # Script containing path information ├── openim-push.sh # Script to start push service diff --git a/scripts/batch_start_all.sh b/scripts/batch_start_all.sh index 91f5a4da0..9aeeb053c 100755 --- a/scripts/batch_start_all.sh +++ b/scripts/batch_start_all.sh @@ -27,7 +27,7 @@ trap 'openim::util::onCtrlC' INT need_to_start_server_shell=( "start_rpc_service.sh" - "msg_gateway_start.sh" + "openim-msggateway.sh" "openim-push.sh" "msg_transfer_start.sh" ) diff --git a/scripts/docker_start_all.sh b/scripts/docker_start_all.sh index d05c840a7..8d57b612b 100755 --- a/scripts/docker_start_all.sh +++ b/scripts/docker_start_all.sh @@ -26,7 +26,7 @@ trap 'openim::util::onCtrlC' INT #fixme Put the shell scripts name here need_to_start_server_shell=( ${SCRIPTS_ROOT}/start_rpc_service.sh - ${SCRIPTS_ROOT}/msg_gateway_start.sh + ${SCRIPTS_ROOT}/openim-msggateway.sh ${SCRIPTS_ROOT}/openim-push.sh ${SCRIPTS_ROOT}/msg_transfer_start.sh ${SCRIPTS_ROOT}/openim-crontask.sh diff --git a/scripts/install/README.md b/scripts/install/README.md index dbc6ca958..d00453133 100644 --- a/scripts/install/README.md +++ b/scripts/install/README.md @@ -38,7 +38,7 @@ The scripts within the OpenIM Suite generally adhere to two primary execution me 2. **Function-based Execution:** Invoking specific functions within the script for more specialized operations (e.g., install, uninstall). ```bash - ./[script-name].sh [function-name] + ./scripts/install/install.sh [function-name] ``` ### 1. Direct Script Execution diff --git a/scripts/install/environment.sh b/scripts/install/environment.sh index 0c9f53386..93a4fc2c1 100755 --- a/scripts/install/environment.sh +++ b/scripts/install/environment.sh @@ -172,7 +172,7 @@ def "OPENIM_CONVERSATION_NAME" "Conversation" # OpenIM对话服务名称 def "OPENIM_THIRD_NAME" "Third" # OpenIM第三方服务名称 ###################### Log Configuration Variables ###################### -def "LOG_STORAGE_LOCATION" "${OPENIM_ROOT}/log/" # 日志存储位置 +def "LOG_STORAGE_LOCATION" "${OPENIM_ROOT}/logs/" # 日志存储位置 def "LOG_ROTATION_TIME" "24" # 日志轮替时间 def "LOG_REMAIN_ROTATION_COUNT" "2" # 保留的日志轮替数量 def "LOG_REMAIN_LOG_LEVEL" "6" # 保留的日志级别 @@ -228,7 +228,6 @@ def "PUSH_PROM_PORT" "20170" # Push 服务的 Prometheus 端口 def "CONVERSATION_PROM_PORT" "20230" # Conversation 服务的 Prometheus 端口 def "RTC_PROM_PORT" "21300" # RTC 服务的 Prometheus 端口 def "THIRD_PROM_PORT" "21301" # Third 服务的 Prometheus 端口 - # Message Transfer 服务的 Prometheus 端口列表 readonly MSG_TRANSFER_PROM_PORTS=${MSG_TRANSFER_PROM_PORTS:-'21400, 21401, 21402, 21403'} @@ -269,44 +268,125 @@ def "OPENIM_CRONTASK_LOG_COMPRESS" "false" def "OPENIM_CRONTASK_LOG_WITH_STACK" "${LOG_WITH_STACK}" # OpenIM openim-crontask 日志是否带有堆栈信息 ###################### OpenIM openim-msggateway ###################### -# 和上述相似,仅替换 openim-crontask 为 openim-msggateway def "OPENIM_MSGGATEWAY_HOST" "127.0.0.1" +def "OPENIM_MSGGATEWAY_BINARY" "${OPENIM_OUTPUT_HOSTBIN}/openim-msggateway" +def "OPENIM_MSGGATEWAY_CONFIG" "${LOCAL_OUTPUT_ROOT}/bin/openim_config.yaml" +def "OPENIM_MSGGATEWAY_LOG_DIR" "${LOG_STORAGE_LOCATION}/openim-msggateway" +def "OPENIM_MSGGATEWAY_LOG_LEVEL" "info" +def "OPENIM_MSGGATEWAY_LOG_MAX_SIZE" "100" +def "OPENIM_MSGGATEWAY_LOG_MAX_BACKUPS" "7" +def "OPENIM_MSGGATEWAY_LOG_MAX_AGE" "7" +def "OPENIM_MSGGATEWAY_LOG_COMPRESS" "false" +def "OPENIM_MSGGATEWAY_LOG_WITH_STACK" "${LOG_WITH_STACK}" ###################### OpenIM openim-msgtransfer ###################### -# 和上述相似,仅替换 openim-crontask 为 openim-msgtransfer def "OPENIM_MSGTRANSFER_HOST" "127.0.0.1" +def "OPENIM_MSGTRANSFER_BINARY" "${OPENIM_OUTPUT_HOSTBIN}/openim-msgtransfer" # OpenIM openim-msgtransfer 二进制文件路径 +def "OPENIM_MSGTRANSFER_CONFIG" "${LOCAL_OUTPUT_ROOT}/bin/openim_config.yaml" # OpenIM openim-msgtransfer 配置文件路径 +def "OPENIM_MSGTRANSFER_LOG_DIR" "${LOG_STORAGE_LOCATION}/openim-msgtransfer" # OpenIM openim-msgtransfer 日志存储路径 +def "OPENIM_MSGTRANSFER_LOG_LEVEL" "info" # OpenIM openim-msgtransfer 日志级别 +def "OPENIM_MSGTRANSFER_LOG_MAX_SIZE" "100" # OpenIM openim-msgtransfer 日志最大大小(MB) +def "OPENIM_MSGTRANSFER_LOG_MAX_BACKUPS" "7" # OpenIM openim-msgtransfer 日志最大备份数 +def "OPENIM_MSGTRANSFER_LOG_MAX_AGE" "7" # OpenIM openim-msgtransfer 日志最大保存时间(天) +def "OPENIM_MSGTRANSFER_LOG_COMPRESS" "false" # OpenIM openim-msgtransfer 日志是否压缩 +def "OPENIM_MSGTRANSFER_LOG_WITH_STACK" "${LOG_WITH_STACK}" # OpenIM openim-msgtransfer 日志是否带有堆栈信息 ###################### OpenIM openim-push ###################### -# 和上述相似,仅替换 openim-crontask 为 openim-push def "OPENIM_PUSH_HOST" "127.0.0.1" +def "OPENIM_PUSH_BINARY" "${OPENIM_OUTPUT_HOSTBIN}/openim-push" # OpenIM openim-push 二进制文件路径 +def "OPENIM_PUSH_CONFIG" "${LOCAL_OUTPUT_ROOT}/bin/openim_config.yaml" # OpenIM openim-push 配置文件路径 +def "OPENIM_PUSH_LOG_DIR" "${LOG_STORAGE_LOCATION}/openim-push" # OpenIM openim-push 日志存储路径 +def "OPENIM_PUSH_LOG_LEVEL" "info" # OpenIM openim-push 日志级别 +def "OPENIM_PUSH_LOG_MAX_SIZE" "100" # OpenIM openim-push 日志最大大小(MB) +def "OPENIM_PUSH_LOG_MAX_BACKUPS" "7" # OpenIM openim-push 日志最大备份数 +def "OPENIM_PUSH_LOG_MAX_AGE" "7" # OpenIM openim-push 日志最大保存时间(天) +def "OPENIM_PUSH_LOG_COMPRESS" "false" # OpenIM openim-push 日志是否压缩 +def "OPENIM_PUSH_LOG_WITH_STACK" "${LOG_WITH_STACK}" # OpenIM openim-push 日志是否带有堆栈信息 ###################### OpenIM openim-rpc-auth ###################### -# 和上述相似,仅替换 openim-crontask 为 openim-rpc-auth def "OPENIM_RPC_AUTH_HOST" "127.0.0.1" +def "OPENIM_RPC_AUTH_BINARY" "${OPENIM_OUTPUT_HOSTBIN}/openim-rpc-auth" # OpenIM openim-rpc-auth 二进制文件路径 +def "OPENIM_RPC_AUTH_CONFIG" "${LOCAL_OUTPUT_ROOT}/bin/openim_config.yaml" # OpenIM openim-rpc-auth 配置文件路径 +def "OPENIM_RPC_AUTH_LOG_DIR" "${LOG_STORAGE_LOCATION}/openim-rpc-auth" # OpenIM openim-rpc-auth 日志存储路径 +def "OPENIM_RPC_AUTH_LOG_LEVEL" "info" # OpenIM openim-rpc-auth 日志级别 +def "OPENIM_RPC_AUTH_LOG_MAX_SIZE" "100" # OpenIM openim-rpc-auth 日志最大大小(MB) +def "OPENIM_RPC_AUTH_LOG_MAX_BACKUPS" "7" # OpenIM openim-rpc-auth 日志最大备份数 +def "OPENIM_RPC_AUTH_LOG_MAX_AGE" "7" # OpenIM openim-rpc-auth 日志最大保存时间(天) +def "OPENIM_RPC_AUTH_LOG_COMPRESS" "false" # OpenIM openim-rpc-auth 日志是否压缩 +def "OPENIM_RPC_AUTH_LOG_WITH_STACK" "${LOG_WITH_STACK}" # OpenIM openim-rpc-auth 日志是否带有堆栈信息 ###################### OpenIM openim-rpc-conversation ###################### -# 和上述相似,仅替换 openim-crontask 为 openim-rpc-conversation def "OPENIM_RPC_CONVERSATION_HOST" "127.0.0.1" +def "OPENIM_RPC_CONVERSATION_BINARY" "${OPENIM_OUTPUT_HOSTBIN}/openim-rpc-conversation" # OpenIM openim-rpc-conversation 二进制文件路径 +def "OPENIM_RPC_CONVERSATION_CONFIG" "${LOCAL_OUTPUT_ROOT}/bin/openim_config.yaml" # OpenIM openim-rpc-conversation 配置文件路径 +def "OPENIM_RPC_CONVERSATION_LOG_DIR" "${LOG_STORAGE_LOCATION}/openim-rpc-conversation" # OpenIM openim-rpc-conversation 日志存储路径 +def "OPENIM_RPC_CONVERSATION_LOG_LEVEL" "info" # OpenIM openim-rpc-conversation 日志级别 +def "OPENIM_RPC_CONVERSATION_LOG_MAX_SIZE" "100" # OpenIM openim-rpc-conversation 日志最大大小(MB) +def "OPENIM_RPC_CONVERSATION_LOG_MAX_BACKUPS" "7" # OpenIM openim-rpc-conversation 日志最大备份数 +def "OPENIM_RPC_CONVERSATION_LOG_MAX_AGE" "7" # OpenIM openim-rpc-conversation 日志最大保存时间(天) +def "OPENIM_RPC_CONVERSATION_LOG_COMPRESS" "false" # OpenIM openim-rpc-conversation 日志是否压缩 +def "OPENIM_RPC_CONVERSATION_LOG_WITH_STACK" "${LOG_WITH_STACK}" # OpenIM openim-rpc-conversation 日志是否带有堆栈信息 ###################### OpenIM openim-rpc-friend ###################### -# 和上述相似,仅替换 openim-crontask 为 openim-rpc-friend def "OPENIM_RPC_FRIEND_HOST" "127.0.0.1" +def "OPENIM_RPC_FRIEND_BINARY" "${OPENIM_OUTPUT_HOSTBIN}/openim-rpc-friend" # OpenIM openim-rpc-friend 二进制文件路径 +def "OPENIM_RPC_FRIEND_CONFIG" "${LOCAL_OUTPUT_ROOT}/bin/openim_config.yaml" # OpenIM openim-rpc-friend 配置文件路径 +def "OPENIM_RPC_FRIEND_LOG_DIR" "${LOG_STORAGE_LOCATION}/openim-rpc-friend" # OpenIM openim-rpc-friend 日志存储路径 +def "OPENIM_RPC_FRIEND_LOG_LEVEL" "info" # OpenIM openim-rpc-friend 日志级别 +def "OPENIM_RPC_FRIEND_LOG_MAX_SIZE" "100" # OpenIM openim-rpc-friend 日志最大大小(MB) +def "OPENIM_RPC_FRIEND_LOG_MAX_BACKUPS" "7" # OpenIM openim-rpc-friend 日志最大备份数 +def "OPENIM_RPC_FRIEND_LOG_MAX_AGE" "7" # OpenIM openim-rpc-friend 日志最大保存时间(天) +def "OPENIM_RPC_FRIEND_LOG_COMPRESS" "false" # OpenIM openim-rpc-friend 日志是否压缩 +def "OPENIM_RPC_FRIEND_LOG_WITH_STACK" "${LOG_WITH_STACK}" # OpenIM openim-rpc-friend 日志是否带有堆栈信息 ###################### OpenIM openim-rpc-group ###################### -# 和上述相似,仅替换 openim-crontask 为 openim-rpc-group def "OPENIM_RPC_GROUP_HOST" "127.0.0.1" +def "OPENIM_RPC_GROUP_BINARY" "${OPENIM_OUTPUT_HOSTBIN}/openim-rpc-group" # OpenIM openim-rpc-group 二进制文件路径 +def "OPENIM_RPC_GROUP_CONFIG" "${LOCAL_OUTPUT_ROOT}/bin/openim_config.yaml" # OpenIM openim-rpc-group 配置文件路径 +def "OPENIM_RPC_GROUP_LOG_DIR" "${LOG_STORAGE_LOCATION}/openim-rpc-group" # OpenIM openim-rpc-group 日志存储路径 +def "OPENIM_RPC_GROUP_LOG_LEVEL" "info" # OpenIM openim-rpc-group 日志级别 +def "OPENIM_RPC_GROUP_LOG_MAX_SIZE" "100" # OpenIM openim-rpc-group 日志最大大小(MB) +def "OPENIM_RPC_GROUP_LOG_MAX_BACKUPS" "7" # OpenIM openim-rpc-group 日志最大备份数 +def "OPENIM_RPC_GROUP_LOG_MAX_AGE" "7" # OpenIM openim-rpc-group 日志最大保存时间(天) +def "OPENIM_RPC_GROUP_LOG_COMPRESS" "false" # OpenIM openim-rpc-group 日志是否压缩 +def "OPENIM_RPC_GROUP_LOG_WITH_STACK" "${LOG_WITH_STACK}" # OpenIM openim-rpc-group 日志是否带有堆栈信息 ###################### OpenIM openim-rpc-msg ###################### -# 和上述相似,仅替换 openim-crontask 为 openim-rpc-msg def "OPENIM_RPC_MSG_HOST" "127.0.0.1" +def "OPENIM_RPC_MSG_BINARY" "${OPENIM_OUTPUT_HOSTBIN}/openim-rpc-msg" # OpenIM openim-rpc-msg 二进制文件路径 +def "OPENIM_RPC_MSG_CONFIG" "${LOCAL_OUTPUT_ROOT}/bin/openim_config.yaml" # OpenIM openim-rpc-msg 配置文件路径 +def "OPENIM_RPC_MSG_LOG_DIR" "${LOG_STORAGE_LOCATION}/openim-rpc-msg" # OpenIM openim-rpc-msg 日志存储路径 +def "OPENIM_RPC_MSG_LOG_LEVEL" "info" # OpenIM openim-rpc-msg 日志级别 +def "OPENIM_RPC_MSG_LOG_MAX_SIZE" "100" # OpenIM openim-rpc-msg 日志最大大小(MB) +def "OPENIM_RPC_MSG_LOG_MAX_BACKUPS" "7" # OpenIM openim-rpc-msg 日志最大备份数 +def "OPENIM_RPC_MSG_LOG_MAX_AGE" "7" # OpenIM openim-rpc-msg 日志最大保存时间(天) +def "OPENIM_RPC_MSG_LOG_COMPRESS" "false" # OpenIM openim-rpc-msg 日志是否压缩 +def "OPENIM_RPC_MSG_LOG_WITH_STACK" "${LOG_WITH_STACK}" # OpenIM openim-rpc-msg 日志是否带有堆栈信息 ###################### OpenIM openim-rpc-third ###################### -# 和上述相似,仅替换 openim-crontask 为 openim-rpc-third def "OPENIM_RPC_THIRD_HOST" "127.0.0.1" +def "OPENIM_RPC_THIRD_BINARY" "${OPENIM_OUTPUT_HOSTBIN}/openim-rpc-third" # OpenIM openim-rpc-third 二进制文件路径 +def "OPENIM_RPC_THIRD_CONFIG" "${LOCAL_OUTPUT_ROOT}/bin/openim_config.yaml" # OpenIM openim-rpc-third 配置文件路径 +def "OPENIM_RPC_THIRD_LOG_DIR" "${LOG_STORAGE_LOCATION}/openim-rpc-third" # OpenIM openim-rpc-third 日志存储路径 +def "OPENIM_RPC_THIRD_LOG_LEVEL" "info" # OpenIM openim-rpc-third 日志级别 +def "OPENIM_RPC_THIRD_LOG_MAX_SIZE" "100" # OpenIM openim-rpc-third 日志最大大小(MB) +def "OPENIM_RPC_THIRD_LOG_MAX_BACKUPS" "7" # OpenIM openim-rpc-third 日志最大备份数 +def "OPENIM_RPC_THIRD_LOG_MAX_AGE" "7" # OpenIM openim-rpc-third 日志最大保存时间(天) +def "OPENIM_RPC_THIRD_LOG_COMPRESS" "false" # OpenIM openim-rpc-third 日志是否压缩 +def "OPENIM_RPC_THIRD_LOG_WITH_STACK" "${LOG_WITH_STACK}" # OpenIM openim-rpc-third 日志是否带有堆栈信息 ###################### OpenIM openim-rpc-user ###################### -# 和上述相似,仅替换 openim-crontask 为 openim-rpc-user def "OPENIM_RPC_USER_HOST" "127.0.0.1" +def "OPENIM_RPC_USER_BINARY" "${OPENIM_OUTPUT_HOSTBIN}/openim-rpc-user" # OpenIM openim-rpc-user 二进制文件路径 +def "OPENIM_RPC_USER_CONFIG" "${LOCAL_OUTPUT_ROOT}/bin/openim_config.yaml" # OpenIM openim-rpc-user 配置文件路径 +def "OPENIM_RPC_USER_LOG_DIR" "${LOG_STORAGE_LOCATION}/openim-rpc-user" # OpenIM openim-rpc-user 日志存储路径 +def "OPENIM_RPC_USER_LOG_LEVEL" "info" # OpenIM openim-rpc-user 日志级别 +def "OPENIM_RPC_USER_LOG_MAX_SIZE" "100" # OpenIM openim-rpc-user 日志最大大小(MB) +def "OPENIM_RPC_USER_LOG_MAX_BACKUPS" "7" # OpenIM openim-rpc-user 日志最大备份数 +def "OPENIM_RPC_USER_LOG_MAX_AGE" "7" # OpenIM openim-rpc-user 日志最大保存时间(天) +def "OPENIM_RPC_USER_LOG_COMPRESS" "false" # OpenIM openim-rpc-user 日志是否压缩 +def "OPENIM_RPC_USER_LOG_WITH_STACK" "${LOG_WITH_STACK}" # OpenIM openim-rpc-user 日志是否带有堆栈信息 + ###################### 设计中...暂时不需要###################################### diff --git a/scripts/install/install.sh b/scripts/install/install.sh index a2a0f2840..6c3877be5 100755 --- a/scripts/install/install.sh +++ b/scripts/install/install.sh @@ -18,4 +18,4 @@ OPENIM_ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")"/../.. && pwd -P) [[ -z ${COMMON_SOURCED} ]] && source ${OPENIM_ROOT}/scripts/install/common.sh # common.sh environment.sh mariadb_for_ubuntu.sh msg_transfer_start.sh openim-push.sh start_rpc_service.sh -# dependency.sh install.sh msg_gateway_start.sh openim-crontask.sh redis_for_ubuntu.sh test.sh man.sh \ No newline at end of file +# dependency.sh install.sh openim-msggateway.sh openim-crontask.sh redis_for_ubuntu.sh test.sh man.sh \ No newline at end of file diff --git a/scripts/install/openim-crontask.sh b/scripts/install/openim-crontask.sh index 88f3fc77b..11f5ad42d 100755 --- a/scripts/install/openim-crontask.sh +++ b/scripts/install/openim-crontask.sh @@ -38,22 +38,19 @@ # Note: Ensure that the appropriate permissions and environmental variables are set prior to script execution. # -set -o errexit -set +o nounset -set -o pipefail OPENIM_ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")"/../.. && pwd -P) [[ -z ${COMMON_SOURCED} ]] && source ${OPENIM_ROOT}/scripts/install/common.sh SERVER_NAME="openim-crontask" -openim::log::status "Start OpenIM Cron, binary root: ${SERVER_NAME}" -openim::log::info "Start OpenIM Cron, path: ${OPENIM_CRONTASK_BINARY}" +openim::log::info "Start OpenIM Cron, binary root: ${SERVER_NAME}" +openim::log::status "Start OpenIM Cron, path: ${OPENIM_CRONTASK_BINARY}" openim::util::stop_services_with_name ${SERVER_NAME} openim::log::status "start cron_task process, path: ${OPENIM_CRONTASK_BINARY}" -nohup ${OPENIM_CRONTASK_BINARY} >>${LOG_FILE} 2>&1 & +nohup ${OPENIM_CRONTASK_BINARY} >> ${LOG_FILE} 2>&1 & openim::util::check_process_names ${SERVER_NAME} ###################################### Linux Systemd ###################################### diff --git a/scripts/install/msg_gateway_start.sh b/scripts/install/openim-msggateway.sh similarity index 91% rename from scripts/install/msg_gateway_start.sh rename to scripts/install/openim-msggateway.sh index fd2f2f646..8c231d87f 100755 --- a/scripts/install/msg_gateway_start.sh +++ b/scripts/install/openim-msggateway.sh @@ -18,15 +18,15 @@ set -o errexit set +o nounset set -o pipefail -OPENIM_ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")"/../.. && pwd -P) -[[ -z ${COMMON_SOURCED} ]] && source ${OPENIM_ROOT}/scripts/install/common.sh +ulimit -n 200000 +SERVER_NAME="openim-msggateway" -#Include shell font styles and some basic information -source $SCRIPTS_ROOT/lib/init.sh -source $SCRIPTS_ROOT/path_info.sh +openim::log::info "Start OpenIM Msggateway, binary root: ${SERVER_NAME}" +openim::log::status "Start OpenIM Msggateway, path: ${OPENIM_MSGGATEWAY_BINARY}" + +openim::util::stop_services_with_name ${SERVER_NAME} -ulimit -n 200000 list1=$(cat $config_path | grep openImMessageGatewayPort | awk -F '[:]' '{print $NF}') list2=$(cat $config_path | grep openImWsPort | awk -F '[:]' '{print $NF}') diff --git a/scripts/install/openim-push.sh b/scripts/install/openim-push.sh index 2b6e10844..367eec308 100755 --- a/scripts/install/openim-push.sh +++ b/scripts/install/openim-push.sh @@ -33,7 +33,11 @@ # 2. Controlling through Functions for systemctl operations: # Specific operations like installation, uninstallation, and status check can be executed by passing the respective function name as an argument to the script. # Example: ./openim-push.sh openim::push::install -# +# +# ENVIRONMENT VARIABLES: +# export OPENIM_PUSH_BINARY="8080 8081 8082" +# export OPENIM_PUSH_PORT="9090 9091 9092" +# # Note: Ensure that the appropriate permissions and environmental variables are set prior to script execution. # set -o errexit @@ -50,8 +54,23 @@ openim::log::info "Start OpenIM Push, path: ${OPENIM_PUSH_BINARY}" openim::util::stop_services_with_name ${SERVER_NAME} -openim::log::status "start push process, path: ${OPENIM_PUSH_BINARY}" -nohup ${OPENIM_PUSH_BINARY} >>${LOG_FILE} 2>&1 & +openim::log::status "prepare start push process, path: ${OPENIM_PUSH_BINARY}" +openim::log::status "prepare start push process, port: ${OPENIM_PUSH_PORT}, prometheus port: ${PUSH_PROM_PORT}" + +OPENIM_PUSH_PORTS_ARRAY=( ${OPENIM_PUSH_PORT} ) +PUSH_PROM_PORTS_ARRAY=( ${PUSH_PROM_PORT} ) + +openim::log::info "push port list: ${OPENIM_PUSH_PORTS_ARRAY[@]}, prometheus port list: ${PUSH_PROM_PORTS_ARRAY[@]}" + +if [ ${#OPENIM_PUSH_PORTS_ARRAY[@]} -ne ${#PUSH_PROM_PORTS_ARRAY[@]} ]; then + openim::log::error_exit "The length of the two port lists is different!" +fi + +for (( i=0; i<${#OPENIM_PUSH_PORTS_ARRAY[@]}; i++ )); do + openim::log::info "start push process, port: ${OPENIM_PUSH_PORTS_ARRAY[$i]}, prometheus port: ${PUSH_PROM_PORTS_ARRAY[$i]}" + nohup ${OPENIM_PUSH_BINARY} --port ${OPENIM_PUSH_PORTS_ARRAY[$i]} --prometheus_port ${PUSH_PROM_PORTS_ARRAY[$i]} >> ${LOG_FILE} 2>&1 & +done + openim::util::check_process_names ${SERVER_NAME} ###################################### Linux Systemd ###################################### @@ -96,7 +115,6 @@ function openim::push::install() popd } - # Unload function openim::push::uninstall() { @@ -128,48 +146,4 @@ function openim::push::status() if [[ "$*" =~ ${SERVER_NAME}:: ]];then eval $* -fi - - - -list1=$(cat $config_path | grep openImPushPort | awk -F '[:]' '{print $NF}') -list2=$(cat $config_path | grep pushPrometheusPort | awk -F '[:]' '{print $NF}') -openim::util::list-to-string $list1 -rpc_ports=($ports_array) -openim::util::list-to-string $list2 -prome_ports=($ports_array) - -#Check if the service exists -#If it is exists,kill this process -check=$(ps -aux | grep -w ./${push_name} | grep -v grep | wc -l) -if [ $check -ge 1 ]; then - oldPid=$(ps -aux | grep -w ./${push_name} | grep -v grep | awk '{print $2}') - kill -9 $oldPid -fi -#Waiting port recycling -sleep 1 -cd ${push_binary_root} - -for ((i = 0; i < ${#rpc_ports[@]}; i++)); do - echo "==========================start push server===========================">>$OPENIM_ROOT/logs/openIM.log - nohup ./${push_name} --port ${rpc_ports[$i]} --prometheus_port ${prome_ports[$i]} >>$OPENIM_ROOT/logs/openIM.log 2>&1 & -done - -sleep 3 -#Check launched service process -check=$(ps -aux | grep -w ./${push_name} | grep -v grep | wc -l) -if [ $check -ge 1 ]; then - newPid=$(ps -aux | grep -w ./${push_name} | grep -v grep | awk '{print $2}') - ports=$(netstat -netulp | grep -w ${newPid} | awk '{print $4}' | awk -F '[:]' '{print $NF}') - allPorts="" - - for i in $ports; do - allPorts=${allPorts}"$i " - done - echo -e ${SKY_BLUE_PREFIX}"SERVICE START SUCCESS "${COLOR_SUFFIX} - echo -e ${SKY_BLUE_PREFIX}"SERVICE_NAME: "${COLOR_SUFFIX}${BACKGROUND_GREEN}${push_name}${COLOR_SUFFIX} - echo -e ${SKY_BLUE_PREFIX}"PID: "${COLOR_SUFFIX}${BACKGROUND_GREEN}${newPid}${COLOR_SUFFIX} - echo -e ${SKY_BLUE_PREFIX}"LISTENING_PORT: "${COLOR_SUFFIX}${BACKGROUND_GREEN}${allPorts}${COLOR_SUFFIX} -else - echo -e ${BACKGROUND_GREEN}${push_name}${COLOR_SUFFIX}${RED_PREFIX}"\n SERVICE START ERROR, PLEASE CHECK openIM.log"${COLOR_SUFFIX} -fi +fi \ No newline at end of file diff --git a/scripts/lib/golang.sh b/scripts/lib/golang.sh index c96f71116..d5ce71482 100755 --- a/scripts/lib/golang.sh +++ b/scripts/lib/golang.sh @@ -98,7 +98,7 @@ openim::golang::start_script_list() { start-rpc_service.sh openim-push.sh msg_transfer_start.sh - msg_gateway_start.sh + openim-msggateway.sh openim-crontask.sh ) local result=() diff --git a/scripts/lib/util.sh b/scripts/lib/util.sh index 83da3b6e4..e0c073f6e 100755 --- a/scripts/lib/util.sh +++ b/scripts/lib/util.sh @@ -877,6 +877,27 @@ function openim::util::join { echo "$*" } +# Function: openim::util::list-to-string +# Description: Converts a list to a string, removing spaces, brackets, and commas. +# Example input: [1002 3 , 2 32 3 , 3 434 ,] +# Example output: 10023 2323 3434 +# Example usage: +# result=$(openim::util::list-to-string "[10023, 2323, 3434]") +# echo $result +function openim::util::list-to-string() { + # Capture all arguments into a single string + ports_list="$*" + + # Use sed for transformations: + # 1. Remove spaces + # 2. Replace commas with spaces + # 3. Remove opening and closing brackets + ports_array=$(echo "$ports_list" | sed 's/ //g; s/,/ /g; s/^\[\(.*\)\]$/\1/') + + # For external use, we might want to echo the result so that it can be captured by callers + echo "$ports_array" +} + # Downloads cfssl/cfssljson/cfssl-certinfo into $1 directory if they do not already exist in PATH # # Assumed vars: @@ -1196,18 +1217,6 @@ function openim::util::onCtrlC () { exit 1 } -# input: [10023, 2323, 3434] -# output: 10023 2323 3434 -# Function function: Converts a list to a string, removing Spaces and parentheses -function openim::util::list-to-string() { - ports_list=$* # 获取传入的参数列表 - sub_s1=$(echo $ports_list | sed 's/ //g') # 去除空格 - sub_s2=${sub_s1//,/ } # 将逗号替换为空格 - sub_s3=${sub_s2#*[} # 去除左括号及其之前的内容 - sub_s4=${sub_s3%]*} # 去除右括号及其之后的内容 - ports_array=$sub_s4 # 将处理后的字符串赋值给变量 ports_array -} - # Function Function: Remove Spaces in the string function openim::util::remove_space() { value=$* # 获取传入的参数