Signed-off-by: Xinwei Xiong(cubxxw-openim) <3293172751nss@gmail.com>pull/825/head
parent
2518985e43
commit
202b1dfdae
@ -1,3 +1,384 @@
|
|||||||
name: openim-crontask
|
# Copyright © 2023 OpenIM. All rights reserved.
|
||||||
description: "This is a description for openim-crontask"
|
#
|
||||||
type: "service"
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------
|
||||||
|
# This config file is the template file
|
||||||
|
# --| source: scripts/template/config-tmpl/openim_config.yaml
|
||||||
|
# --| env: scripts/install/environment.sh
|
||||||
|
# --| target: config/config.yaml
|
||||||
|
# -----------------------------------------------------------------
|
||||||
|
|
||||||
|
###################### 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: ""
|
||||||
|
|
||||||
|
###################### 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" ]
|
||||||
|
username: "root"
|
||||||
|
password: "openIM123"
|
||||||
|
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" ]
|
||||||
|
database: "openIM_v3"
|
||||||
|
username: "root"
|
||||||
|
password: "openIM123"
|
||||||
|
maxPoolSize: "100"
|
||||||
|
|
||||||
|
###################### Redis configuration information ######################
|
||||||
|
# Redis configuration
|
||||||
|
#
|
||||||
|
# Username is required only for Redis version 6.0+
|
||||||
|
redis:
|
||||||
|
address: [ "127.0.0.1:16379" ]
|
||||||
|
username: ""
|
||||||
|
password: "openIM123"
|
||||||
|
|
||||||
|
###################### Kafka configuration information ######################
|
||||||
|
# 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" ]
|
||||||
|
latestMsgToRedis:
|
||||||
|
topic: "latestMsgToRedis"
|
||||||
|
offlineMsgToMongo:
|
||||||
|
topic: "offlineMsgToMongoMysql"
|
||||||
|
msgToPush:
|
||||||
|
topic: "msgToPush"
|
||||||
|
consumerGroupID:
|
||||||
|
msgToRedis: "redis"
|
||||||
|
msgToMongo: "mongo"
|
||||||
|
msgToMySql: "mysql"
|
||||||
|
msgToPush: "push"
|
||||||
|
|
||||||
|
###################### RPC configuration information ######################
|
||||||
|
# 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: ""
|
||||||
|
listenIP: "0.0.0.0"
|
||||||
|
|
||||||
|
###################### API configuration information ######################
|
||||||
|
# API configuration
|
||||||
|
#
|
||||||
|
# API service port
|
||||||
|
# Default listen IP is 0.0.0.0
|
||||||
|
api:
|
||||||
|
openImApiPort: [ "10002" ]
|
||||||
|
listenIP: "0.0.0.0"
|
||||||
|
|
||||||
|
###################### Object configuration information ######################
|
||||||
|
# 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
|
||||||
|
# It can be set by an environment variable or by a script
|
||||||
|
object:
|
||||||
|
enable: "minio"
|
||||||
|
apiURL: "http://127.0.0.1:10002/object/"
|
||||||
|
minio:
|
||||||
|
bucket: "openim"
|
||||||
|
endpoint: "http://113.90.83.134:10005"
|
||||||
|
accessKeyID: "root"
|
||||||
|
secretAccessKey: "openIM123"
|
||||||
|
sessionToken: ""
|
||||||
|
cos:
|
||||||
|
bucketURL: "https://temp-1252357374.cos.ap-chengdu.myqcloud.com"
|
||||||
|
secretID: ""
|
||||||
|
secretKey: ""
|
||||||
|
sessionToken: ""
|
||||||
|
oss:
|
||||||
|
endpoint: "https://oss-cn-chengdu.aliyuncs.com"
|
||||||
|
bucket: "demo-9999999"
|
||||||
|
bucketURL: "https://demo-9999999.oss-cn-chengdu.aliyuncs.com"
|
||||||
|
accessKeyID: "root"
|
||||||
|
accessKeySecret: ""
|
||||||
|
sessionToken: ""
|
||||||
|
|
||||||
|
|
||||||
|
###################### RPC Port Configuration ######################
|
||||||
|
# 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" ]
|
||||||
|
openImMessageGatewayPort: [ "10140" ]
|
||||||
|
openImGroupPort: [ "10150" ]
|
||||||
|
openImAuthPort: [ "10160" ]
|
||||||
|
openImPushPort: [ "10170" ]
|
||||||
|
openImConversationPort: [ "10180" ]
|
||||||
|
openImThirdPort: [ "10190" ]
|
||||||
|
|
||||||
|
###################### RPC Register Name Configuration ######################
|
||||||
|
# RPC service names for registration, it's not recommended to modify these
|
||||||
|
rpcRegisterName:
|
||||||
|
openImUserName: "User"
|
||||||
|
openImFriendName: "Friend"
|
||||||
|
openImMsgName: "Msg"
|
||||||
|
openImPushName: "Push"
|
||||||
|
openImMessageGatewayName: "MessageGateway"
|
||||||
|
openImGroupName: "Group"
|
||||||
|
openImAuthName: "Auth"
|
||||||
|
openImConversationName: "Conversation"
|
||||||
|
openImThirdName: "Third"
|
||||||
|
|
||||||
|
###################### Log Configuration ######################
|
||||||
|
# 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: "/root/workspaces/openim/openim-server/log/"
|
||||||
|
rotationTime: 24
|
||||||
|
remainRotationCount: 2
|
||||||
|
remainLogLevel: 6
|
||||||
|
isStdout: false
|
||||||
|
isJson: false
|
||||||
|
withStack: false
|
||||||
|
|
||||||
|
###################### Variables definition ######################
|
||||||
|
# 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" ]
|
||||||
|
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:
|
||||||
|
pushUrl: "https://restapi.getui.com/v2/$appId"
|
||||||
|
masterSecret: ""
|
||||||
|
appKey: ""
|
||||||
|
intent: ""
|
||||||
|
channelID: ""
|
||||||
|
channelName: ""
|
||||||
|
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" ]
|
||||||
|
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
|
||||||
|
|
||||||
|
# Whether to enable read receipts for group chat
|
||||||
|
groupMessageHasReadReceiptEnable: true
|
||||||
|
|
||||||
|
# Whether to enable read receipts for single chat
|
||||||
|
singleMessageHasReadReceiptEnable: true
|
||||||
|
|
||||||
|
# MongoDB offline message retention period in days
|
||||||
|
retainChatRecords: 365
|
||||||
|
|
||||||
|
# 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 * * *"
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
# Message verification policy
|
||||||
|
#
|
||||||
|
# Whether to verify friendship when sending messages
|
||||||
|
messageVerify:
|
||||||
|
friendVerify: false
|
||||||
|
|
||||||
|
# iOS push notification configuration
|
||||||
|
#
|
||||||
|
# iOS push notification sound
|
||||||
|
# Whether to count badge
|
||||||
|
# Whether it's production environment
|
||||||
|
iosPush:
|
||||||
|
pushSound: "xxx"
|
||||||
|
badgeCount: true
|
||||||
|
production: false
|
||||||
|
|
||||||
|
###################### Third-party service configuration ######################
|
||||||
|
# Callback configuration
|
||||||
|
#
|
||||||
|
# Callback URL
|
||||||
|
# Whether to enable this callback event
|
||||||
|
# Timeout in seconds
|
||||||
|
# Whether to continue execution if callback fails
|
||||||
|
callback:
|
||||||
|
url:
|
||||||
|
beforeSendSingleMsg:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
failedContinue: true
|
||||||
|
afterSendSingleMsg:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
beforeSendGroupMsg:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
failedContinue: true
|
||||||
|
afterSendGroupMsg:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
msgModify:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
failedContinue: true
|
||||||
|
userOnline:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
userOffline:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
userKickOff:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
offlinePush:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
failedContinue: true
|
||||||
|
onlinePush:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
failedContinue: true
|
||||||
|
superGroupOnlinePush:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
failedContinue: true
|
||||||
|
beforeAddFriend:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
failedContinue: true
|
||||||
|
beforeCreateGroup:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
failedContinue: true
|
||||||
|
beforeMemberJoinGroup:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
failedContinue: true
|
||||||
|
beforeSetGroupMemberInfo:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
failedContinue: true
|
||||||
|
setMessageReactionExtensions:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
failedContinue: true
|
||||||
|
|
||||||
|
###################### Prometheus ######################
|
||||||
|
# Prometheus configuration for various services
|
||||||
|
# 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" ]
|
||||||
|
messagePrometheusPort: [ "20130" ]
|
||||||
|
messageGatewayPrometheusPort: [ "20140" ]
|
||||||
|
groupPrometheusPort: [ "20150" ]
|
||||||
|
authPrometheusPort: [ "20160" ]
|
||||||
|
pushPrometheusPort: [ "20170" ]
|
||||||
|
conversationPrometheusPort: [ "20230" ]
|
||||||
|
rtcPrometheusPort: [ "21300" ]
|
||||||
|
thirdPrometheusPort: [ "21301" ]
|
||||||
|
messageTransferPrometheusPort: [ "21400, 21401, 21402, 21403" ] # List of ports
|
||||||
|
@ -1,103 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# Copyright © 2023 OpenIM. All rights reserved.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
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::util::stop_services_with_name ${SERVER_NAME}
|
|
||||||
|
|
||||||
# sleep 1
|
|
||||||
|
|
||||||
# openim::log::status "start cron_task process, path: ${OPENIM_CRONTASK_BINARY}"
|
|
||||||
# nohup ${OPENIM_CRONTASK_BINARY} >>${LOG_FILE} 2>&1 &
|
|
||||||
# openim::util::check_process_names ${SERVER_NAME}
|
|
||||||
|
|
||||||
# # Print the necessary information after installation
|
|
||||||
# function openim::crontask::info() {
|
|
||||||
# cat << EOF
|
|
||||||
# openim-crontask listen on: ${OPENIM_CRONTASK_HOST}
|
|
||||||
# EOF
|
|
||||||
# }
|
|
||||||
|
|
||||||
# install openim-crontask
|
|
||||||
function openim::crontask::install()
|
|
||||||
{
|
|
||||||
pushd ${OPENIM_ROOT}
|
|
||||||
|
|
||||||
# 1. Build openim-crontask
|
|
||||||
make build BINS=${SERVER_NAME}
|
|
||||||
openim::common::sudo "cp ${OPENIM_OUTPUT_HOSTBIN}/${SERVER_NAME} ${OPENIM_INSTALL_DIR}/bin"
|
|
||||||
|
|
||||||
# 2. Generate and install the openim-crontask configuration file (openim-crontask.yaml)
|
|
||||||
echo ${LINUX_PASSWORD} | sudo -S bash -c \
|
|
||||||
"./scripts/genconfig.sh ${ENV_FILE} deployments/templates/openim-crontask.yaml > ${OPENIM_CONFIG_DIR}/openim-crontask.yaml"
|
|
||||||
|
|
||||||
# 3. Create and install the openim-crontask systemd unit file
|
|
||||||
echo ${LINUX_PASSWORD} | sudo -S bash -c \
|
|
||||||
"./scripts/genconfig.sh ${ENV_FILE} deployments/templates/init/openim-crontask.service > /etc/systemd/system/openim-crontask.service"
|
|
||||||
|
|
||||||
# 4. Start the openim-crontask service
|
|
||||||
openim::common::sudo "systemctl daemon-reload"
|
|
||||||
openim::common::sudo "systemctl restart openim-crontask"
|
|
||||||
openim::common::sudo "systemctl enable openim-crontask"
|
|
||||||
openim::crontask::status || return 1
|
|
||||||
openim::crontask::info
|
|
||||||
|
|
||||||
openim::log::info "install openim-crontask successfully"
|
|
||||||
popd
|
|
||||||
}
|
|
||||||
|
|
||||||
# Unload
|
|
||||||
function openim::crontask::uninstall()
|
|
||||||
{
|
|
||||||
set +o errexit
|
|
||||||
openim::common::sudo "systemctl stop openim-crontask"
|
|
||||||
openim::common::sudo "systemctl disable openim-crontask"
|
|
||||||
openim::common::sudo "rm -f ${OPENIM_INSTALL_DIR}/bin/openim-crontask"
|
|
||||||
openim::common::sudo "rm -f ${OPENIM_CONFIG_DIR}/openim-crontask.yaml"
|
|
||||||
openim::common::sudo "rm -f /etc/systemd/system/openim-crontask.service"
|
|
||||||
set -o errexit
|
|
||||||
openim::log::info "uninstall openim-crontask successfully"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Status Check
|
|
||||||
function openim::crontask::status()
|
|
||||||
{
|
|
||||||
# 查看 openim-crontask 运行状态,如果输出中包含 active (running) 字样说明 openim-crontask 成功启动。
|
|
||||||
systemctl status openim-crontask|grep -q 'active' || {
|
|
||||||
openim::log::error "openim-crontask failed to start, maybe not installed properly"
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
|
|
||||||
# 监听端口在配置文件中是 hardcode
|
|
||||||
if echo | telnet 127.0.0.1 7070 2>&1|grep refused &>/dev/null;then
|
|
||||||
openim::log::error "cannot access health check port, openim-crontask maybe not startup"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
if [[ "$*" =~ openim::crontask:: ]];then
|
|
||||||
eval $*
|
|
||||||
fi
|
|
Loading…
Reference in new issue