该操作均在CentOS7下进行
这里不推荐直接使用 git clone --recursive 方式,因为大家都懂的网络问题!
首先到 https://github.com/OpenIMSDK/Open-IM-Server 下载项目压缩包
再到 https://github.com/OpenIMSDK/Open-IM-SDK-Core 选择最新的 tag 下载项目压缩包
都解压,把 Open-IM-SDK-Core 下的内容放入到 Open-IM-Server/cmd/Open-IM-SDK-Core 里面
OK ,项目核心内容就搞定了!
现在我们开始部署项目所需要的环境:
安装最新 golang ,配置 go 代理
export GOPROXY=https://proxy.golang.com.cn,direct
检测服务器是否安装了 java (kafka服务需要用到,推荐 java1.8),可以 java -version 检测,如果输出以下内容,则代表安装成功
openjdk version "1.8.0_352"
OpenJDK Runtime Environment (build 1.8.0_352-b08)
OpenJDK 64-Bit Server VM (build 25.352-b08, mixed mode)
如果没有可执行
yum -y install java-1.8.0-openjdk*
然后命令检测是否存在 JAVA_HOME
echo $JAVA_HOME
如果没有输出 在 vi /etc/profile 下添加
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.352.b08-2.el7_9.x86_64
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
其中 JAVA_HOME 的路径需要到 /usr/lib/jvm/java-1.8.0- 内自己匹配,然后
source/etc/profile
安装etcd
到 https://github.com/etcd-io/etcd/releases 下找到最新的 linux-amd64.tar.gz
然后 wget 下载压缩包,解压到 /usr/local/etcd
vi /etc/profile
内加入
export ETCDPATH="/usr/local/etcd"
export ETCDCTL_API=3
export PATH="$PATH:$ETCDPATH"
然后
source/etc/profile
启动 etcd ,建议采用守护方式 nohup 之类守护
/usr/local/etcd/etcd --data-dir $ETCDPATH/test_data
安装 kafka
到 https://kafka.apache.org/downloads 下载 tgz 压缩包,这里选择 Scala 2.13-kafka_2.13-3.3.1.tgz (asc, sha512)
解压到 /usr/local/kafka ,进入目录
备份 config 下的两个文件, zookeeper.properties 和 server.properties
编辑 zookeeper.properties 为以下内容
tickTime=2000
dataDir=/usr/local/kafka/zk/data/
dataLogDir=/usr/local/kafka/zk/logs/
clientPort=2181
编辑 server.properties 为以下内容
broker.id=1
listeners=PLAINTEXT://127.0.0.1:9092
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/usr/local/kafka/logs
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
zookeeper.connect=127.0.0.1:2181
zookeeper.connection.timeout.ms=6000
在 kafka 下分别新增目录 zk/logs 、 zk/data 、 logs
进入 bin 目录,自行守护启动
./zookeeper-server-start.sh -daemon ../config/zookeeper.properties #启动zookeeper
./kafka-server-start.sh -daemon ../config/server.properties #启动kafka
使用 jps 命令查看服务是否启动成功
安装MySQL(建议8.0+),redis(建议7.0+),MongoDB(建议4.0+)
到此,所有所需要的环境均已配置完毕
进入到 Open-IM-Server 的 cmd 目录下 执行
go mod tidy
进入到 Open-IM-Server 的 config 目录下 修改 config.yaml
修改 Etcd 配置项
etcd:
etcdAddr: [ 127.0.0.1:2379 ]//组件部署在本地默认IP+监听端口即可,部署在其他服务器,更换为服务监听的IP+端口
修改 MySQL 配置项
mysql:
dbAddress: [ 127.0.0.1:3306 ]//组件部署在本地默认IP+监听端口(部署的MySQL端口默认为3306,如果未修改,记得修改此项配置)即可,部署在其他服务器,更换为服务监听的IP+端口
dbUserName: root //修改为部署的MySQL账户名
dbPassword: openIM //修改为部署的MySQL密码
修改 MongoDB 配置项
mongo:
dbAddress: 127.0.0.1:27017 //组件部署在本地默认IP+监听端口即可,部署在其他服务器,更换为服务监听的IP+端口
dbDatabase: openIM //mongo中初始化的数据库名称,可修改
dbUserName:
dbPassword:
修改 Redis 配置项
redis:
dbAddress: [ 127.0.0.1:6379 ]
dbPassWord: openIM #redis密码 修改为部署的redis密码
enableCluster: false #如果外部redis以集群方式启动,需要打开此开关,单机默认
修改 Kafka 配置项
kafka:
ws2mschat:
addr: [ 127.0.0.1:9092 ] //组件部署在本地默认IP+监听端口即可,部署在其他服务器,更换为服务监听的IP+端口
topic: "ws2ms_chat"
ws2mschatoffline:
addr: [ 127.0.0.1:9092 ] //组件部署在本地默认IP+监听端口即可,部署在其他服务器,更换为服务监听的IP+端口
topic: "ws2ms_chat_offline"
msgtomongo:
addr: [ 127.0.0.1:9092 ] //组件部署在本地默认IP+监听端口即可,部署在其他服务器,更换为服务监听的IP+端口
topic: "msg_to_mongo"
ms2pschat:
addr: [ 127.0.0.1:9092 ] //组件部署在本地默认IP+监听端口即可,部署在其他服务器,更换为服务监听的IP+端口
topic: "ms2ps_chat"
进入到 Open-IM-Server 的 script 目录下 执行
chmod +x *.sh
./build_all_service.sh
./start_all.sh
./check_all.sh
如果中途有报错,进入 logs 下的 openIM.log 记录排查