From a86d24cfd105874417a215cfb6bc15b7dc0e644d Mon Sep 17 00:00:00 2001 From: Xinwei Xiong <3293172751@qq.com> Date: Thu, 27 Jul 2023 14:38:46 +0800 Subject: [PATCH] feat: config env optimize (#680) Signed-off-by: Xinwei Xiong(cubxxw-openim) <3293172751nss@gmail.com> --- .env | 6 +- config/config.yaml | 282 +++++++++++++++++++++++++++++++-------------- install.sh | 8 +- 3 files changed, 205 insertions(+), 91 deletions(-) diff --git a/.env b/.env index e7971a07a..910d864b8 100644 --- a/.env +++ b/.env @@ -1,5 +1,5 @@ USER=root PASSWORD=openIM123 -MINIO_ENDPOINT=http://116.30.3.80:10005 -API_URL=http://116.30.3.80:10002/object/ -DATA_DIR=./ +MINIO_ENDPOINT=http://113.99.98.99:10005 +API_URL=http://113.99.98.99:10002/object/ +DATA_DIR=./ \ No newline at end of file diff --git a/config/config.yaml b/config/config.yaml index 3f43a7a69..74c864fc3 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -12,81 +12,133 @@ # See the License for the specific language governing permissions and # limitations under the License. -#OpenIM config - - -#---------------Infrastructure configuration---------------------# +# ----------------------------------------------------------------- +# Infrastructural configurations, please modify based on your setup +# ----------------------------------------------------------------- + +###################### Zookeeper ###################### +# Zookeeper configuration +# It's not recommended to modify the schema +# +# Zookeeper address +# Zookeeper username +# Zookeeper password zookeeper: - schema: openim #不建议修改 - address: [ 127.0.0.1:2181 ] # - username: #用户名 - password: #密码 - + schema: openim + address: [ 127.0.0.1:2181 ] + username: + password: + +###################### Mysql ###################### +# MySQL configuration +# Currently, only single machine setup is supported +# +# Maximum number of open connections +# Maximum number of idle connections +# Maximum lifetime in seconds a connection can be reused +# Log level: 1=slient, 2=error, 3=warn, 4=info +# Slow query threshold in milliseconds mysql: - address: [ 127.0.0.1:13306 ] #目前仅支持单机 + address: [ 127.0.0.1:13306 ] username: root password: openIM123 - database: openIM_v3 #不建议修改 - maxOpenConn: 1000 #最大连接数 - maxIdleConn: 100 #最大空闲连接数 - maxLifeTime: 60 #连接可以重复使用的最长时间(秒) - logLevel: 4 #日志级别 1=slient 2=error 3=warn 4=info - slowThreshold: 500 #慢语句阈值 (毫秒) - + database: openIM_v3 + maxOpenConn: 1000 + maxIdleConn: 100 + maxLifeTime: 60 + logLevel: 4 + slowThreshold: 500 + +###################### Mongo ###################### +# MongoDB configuration +# If uri is not empty, it will be used directly +# +# MongoDB address for standalone setup, Mongos address for sharded cluster setup +# Default MongoDB database name +# Maximum connection pool size mongo: - uri: #不为空则直接使用该值 - address: [ 127.0.0.1:37017 ] #单机时为mongo地址,使用分片集群时,为mongos地址 - database: openIM_v3 #mongo db 默认即可 + uri: + address: [ 127.0.0.1:37017 ] + database: openIM_v3 username: root password: openIM123 - maxPoolSize: 100 + maxPoolSize: 100 +###################### Redis ###################### +# Redis configuration +# +# Username is required only for Redis version 6.0+ redis: - address: [ 127.0.0.1:16379 ] # - username: #only redis version 6.0+ need username + address: [ 127.0.0.1:16379 ] + username: password: openIM123 +###################### Kafka ###################### +# Kafka configuration +# +# Kafka username +# Kafka password +# It's not recommended to modify this topic name +# Consumer group ID, it's not recommended to modify kafka: - username: #用户名 - password: #密码 - addr: [ 127.0.0.1:9092 ] # + username: + password: + addr: [ 127.0.0.1:9092 ] latestMsgToRedis: - topic: "latestMsgToRedis" #不建议修改 + topic: "latestMsgToRedis" offlineMsgToMongo: - topic: "offlineMsgToMongoMysql" #不建议修改 + topic: "offlineMsgToMongoMysql" msgToPush: - topic: "msgToPush" #不建议修改 - consumerGroupID: #消费者组,不建议修改 - msgToRedis: redis # - msgToMongo: mongo # - msgToMySql: mysql # - msgToPush: push # - - + topic: "msgToPush" + consumerGroupID: + msgToRedis: redis + msgToMongo: mongo + msgToMySql: mysql + msgToPush: push + +###################### RPC ###################### +# RPC configuration +# +# IP address to register with zookeeper when starting RPC, the IP and corresponding rpcPort should be accessible by api/gateway +# Default listen IP is 0.0.0.0 rpc: - registerIP: #作为rpc启动时,注册到zookeeper的IP,api/gateway能访问到此ip和对应的rpcPort中的端口 - listenIP: #默认为0.0.0.0 - + registerIP: + listenIP: 0.0.0.0 +###################### API ###################### +# API configuration +# +# API service port +# Default listen IP is 0.0.0.0 api: - openImApiPort: [ 10002 ] #api服务端口 - listenIP: #默认为0.0.0.0 + openImApiPort: [ 10002 ] + listenIP: 0.0.0.0 +###################### Gateway ###################### +# Object storage configuration +# +# Use minio for object storage +# API URL should be accessible by the app +# It's not recommended to modify the bucket name +# Endpoint should be accessible by the app +# Session token +# Configuration for Tencent COS +# Configuration for Aliyun OSS object: - enable: "minio" #使用minio - apiURL: "http://127.0.0.1:10002/object/" #地址需要app能访问到 + enable: "minio" + apiURL: "http://127.0.0.1:10002/object/" minio: - bucket: "openim" #不建议修改 - endpoint: http://127.0.0.1:10005 #地址需要app能够访问 + bucket: "openim" + endpoint: http://127.0.0.1:10005 accessKeyID: root secretAccessKey: openIM123 - sessionToken: "" #token - cos: #tencent cos + sessionToken: "" + cos: bucketURL: "https://temp-1252357374.cos.ap-chengdu.myqcloud.com" secretID: "" secretKey: "" sessionToken: "" - oss: #ali oss + oss: endpoint: "https://oss-cn-chengdu.aliyuncs.com" bucket: "demo-9999999" bucketURL: "https://demo-9999999.oss-cn-chengdu.aliyuncs.com" @@ -94,7 +146,11 @@ object: accessKeySecret: "" sessionToken: "" -rpcPort: #rpc服务端口,不建议修改,端口由脚本读取后传入程序,如启动多个程序,只需要填入多个端口,用逗号隔开,如 [10110, 10111] +# RPC service ports +# These ports are passed into the program by the script and are not recommended to modify +# For launching multiple programs, just fill in multiple ports separated by commas +# For example, [10110, 10111] +rpcPort: openImUserPort: [ 10110 ] openImFriendPort: [ 10120 ] openImMessagePort: [ 10130 ] @@ -105,7 +161,8 @@ rpcPort: #rpc服务端口,不建议修改,端口由脚本读取后传入程 openImConversationPort: [ 10180 ] openImThirdPort: [ 10190 ] -rpcRegisterName: #rpc注册服务名,不建议修改 +# RPC service names for registration, it's not recommended to modify these +rpcRegisterName: openImUserName: User openImFriendName: Friend openImMsgName: Msg @@ -116,78 +173,132 @@ rpcRegisterName: #rpc注册服务名,不建议修改 openImConversationName: Conversation openImThirdName: Third +# Log configuration +# +# Storage directory +# Log rotation time +# Maximum number of logs to retain +# Log level, 6 means all levels +# Whether to output to stdout +# Whether to output in json format +# Whether to include stack trace in logs log: - storageLocation: ../../../../../logs/ #存放目录 - rotationTime: 24 #日志旋转时间 - remainRotationCount: 2 #日志数量 - remainLogLevel: 6 #日志级别 6表示全都打印, - isStdout: false - isJson: false + storageLocation: ../../../../../logs/ + rotationTime: 24 + remainRotationCount: 2 + remainLogLevel: 6 + isStdout: false + isJson: false withStack: false +# Long connection server configuration +# +# Websocket port for msg_gateway +# Maximum number of websocket connections +# Maximum length of websocket request package +# Websocket connection handshake timeout longConnSvr: - openImWsPort: [ 10001 ] #msg_gateway的websocket端口 - websocketMaxConnNum: 100000 #websocket最大连接数 - websocketMaxMsgLen: 4096 #websocket请求包最大长度 - websocketTimeout: 10 #websocket连接握手超时时间 + openImWsPort: [ 10001 ] + websocketMaxConnNum: 100000 + websocketMaxMsgLen: 4096 + websocketTimeout: 10 +# Push notification service configuration +# +# Use GeTui for push notifications +# GeTui offline push configuration +# FCM offline push configuration +# Account file, place it in the config directory +# JPush configuration, modify these after applying in JPush backend push: enable: getui - geTui: #个推离线推送 + geTui: pushUrl: "https://restapi.getui.com/v2/$appId" masterSecret: "" appKey: "" intent: "" channelID: "" channelName: "" - fcm: #fcm离线推送 - serviceAccount: "x.json" #帐号文件,并放在 config目录下 - jpns: #极光推送 在极光后台申请后,修改以下四项 + fcm: + serviceAccount: "x.json" + jpns: appKey: masterSecret: pushUrl: pushIntent: +# App manager configuration +# +# Built-in app manager user IDs +# Built-in app manager nicknames manager: - userID: [ "openIM123456","openIM654321","openIMAdmin" ] #内置的app管理员userID - nickname: [ "system1","system2", "system3" ] #内置的app管理员nickname + userID: [ "openIM123456","openIM654321","openIMAdmin" ] + nickname: [ "system1","system2", "system3" ] +# Multi-platform login policy +# For each platform(Android, iOS, Windows, Mac, web), only one can be online at a time +multiLoginPolicy: 1 +# Whether to store messages in MySQL, messages in MySQL are only used for management background +chatPersistenceMysql: true +# Message cache timeout in seconds, it's not recommended to modify +msgCacheTimeout: 86400 -multiLoginPolicy: 1 #多平台登录:Android、iOS、Windows、Mac、web 每种平台只能有一个在线 +# Whether to enable read receipts for group chat +groupMessageHasReadReceiptEnable: true +# Whether to enable read receipts for single chat +singleMessageHasReadReceiptEnable: true -chatPersistenceMysql: true #消息是否存入mysql,mysql中的消息仅用于管理后台使用 -msgCacheTimeout: 86400 #信消息缓存时间秒,不建议修改 -groupMessageHasReadReceiptEnable: true #群聊已读是否开启 -singleMessageHasReadReceiptEnable: true #单聊已读是否开启 +# MongoDB offline message retention period in days +retainChatRecords: 365 -retainChatRecords: 365 #mongo保存离线消息时间(天) -chatRecordsClearTime: "0 2 * * 3" #每周三凌晨2点清理mongo中的过期(超过retainChatRecords时间)消息,这个删除是为了清理满足上个配置retainChatRecords的过期消息,不会发送通知,仅仅作为清理磁盘使用 -msgDestructTime: "0 2 * * *" #消息自动删除时间,每天凌晨2点删除过期消息,这个删除是为了删除保留时间超过超过会话字段msg_destruct_time(秒)的消息。 +# Schedule to clear expired messages(older than retainChatRecords days) in MongoDB every Wednesday at 2am +# This deletion is just for cleaning up disk usage according to previous configuration retainChatRecords, no notification will be sent +chatRecordsClearTime: "0 2 * * 3" +# Schedule to auto delete messages every day at 2am +# This deletion is for messages that have been retained for more than msg_destruct_time (seconds) in the conversation field +msgDestructTime: "0 2 * * *" + +# Secret key secret: openIM123 +# Token policy +# +# Token expiration period in days tokenPolicy: - expire: 90 #过期时间(天) + expire: 90 +# Message verification policy +# +# Whether to verify friendship when sending messages messageVerify: - friendVerify: false #发送消息时是否验证好友关系 + friendVerify: false -#ios系统推送声音以及标记计数 +# iOS push notification configuration +# +# iOS push notification sound +# Whether to count badge +# Whether it's production environment iosPush: pushSound: "xxx" badgeCount: true production: false +# Callback configuration +# +# Callback URL +# Whether to enable this callback event +# Timeout in seconds +# Whether to continue execution if callback fails callback: - # 回调callback url: beforeSendSingleMsg: - enable: false #是否启用此回调事件 - timeout: 5 #超时时间(秒) - failedContinue: true #如回调失败是否继续往后执行 + enable: false + timeout: 5 + failedContinue: true afterSendSingleMsg: enable: false timeout: 5 @@ -244,8 +355,11 @@ callback: timeout: 5 failedContinue: true - -prometheus: #prometheus每个服务的端口数量需要和rpcPort保持对应 +###################### Prometheus ###################### +# Prometheus configuration +# The number of Prometheus ports per service needs to correspond to rpcPort +# The number of ports needs to be consistent with msg_transfer_service_num in script/path_info.sh +prometheus: enable: false userPrometheusPort: [ 20110 ] friendPrometheusPort: [ 20120 ] @@ -257,4 +371,4 @@ prometheus: #prometheus每个服务的端口数量需要和rpcPort保持对应 conversationPrometheusPort: [ 20230 ] rtcPrometheusPort: [ 21300 ] thirdPrometheusPort: [ 21301 ] - messageTransferPrometheusPort: [ 21400, 21401, 21402, 21403 ] #端口数量需要和script/path_info.sh中的msg_transfer_service_num保持一致 \ No newline at end of file + messageTransferPrometheusPort: [ 21400, 21401, 21402, 21403 ] \ No newline at end of file diff --git a/install.sh b/install.sh index 0c3a3945e..f9b9b7ec4 100755 --- a/install.sh +++ b/install.sh @@ -308,9 +308,9 @@ function cmd_help() { color_echo ${BLUE_PREFIX} "-cn, --china ${CYAN_PREFIX}set to use the Chinese domestic proxy${COLOR_SUFFIX}" color_echo ${BLUE_PREFIX} "-t, --tag ${CYAN_PREFIX}specify the tag (default option, set to latest if not specified)${COLOR_SUFFIX}" color_echo ${BLUE_PREFIX} "-r, --release ${CYAN_PREFIX}specify the release branch (cannot be used with the tag option)${COLOR_SUFFIX}" - color_echo ${BLUE_PREFIX} "-g, --go-version ${CYAN_PREFIX}set the Go language version (default: GO_VERSION=\"1.18\")${COLOR_SUFFIX}" - color_echo ${BLUE_PREFIX} "-i, --install-dir ${CYAN_PREFIX}set the OpenIM installation directory (default: /tmp)${COLOR_SUFFIX}" color_echo ${BLUE_PREFIX} "-gt, --github-token ${CYAN_PREFIX}set the GITHUB_TOKEN (default: not set)${COLOR_SUFFIX}" + color_echo ${BLUE_PREFIX} "-g, --go-version ${CYAN_PREFIX}set the Go language version (default: GO_VERSION=\"1.18\")${COLOR_SUFFIX}" + color_echo ${BLUE_PREFIX} "--install-dir ${CYAN_PREFIX}set the OpenIM installation directory (default: /tmp)${COLOR_SUFFIX}" color_echo ${BLUE_PREFIX} "--cpu ${CYAN_PREFIX}set the number of concurrent processes${COLOR_SUFFIX}" echo color_echo ${RED_PREFIX} "Note: Only one of the -t/--tag or -r/--release options can be used at a time.${COLOR_SUFFIX}" @@ -380,7 +380,7 @@ function parseinput() { shift GO_VERSION=$1 ;; - -i|--install-dir) + --install-dir) shift INSTALL_DIR=$1 ;; @@ -435,7 +435,7 @@ print_progress() { color_echo() { COLOR=$1 shift - echo -e "${COLOR}===> $* ${COLOR_SUFFIX}" + echo -e "${COLOR} $* ${COLOR_SUFFIX}" } # Color definitions