当前位置:首页 > 其他 > 手摸手源码单机部署OpenIM实况教学

宝塔服务器面板,一键全能部署及管理,送你3188元礼包,点我领取

手摸手源码单机部署OpenIM实况教学

原创 2022-10-27 其他 232
分享给朋友:

该操作均在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 记录排查


声明:版权所有,违者必究 | 如未注明,均为原创 | 本网站采用 BY-NC-SA 协议进行授权

转载:转载请注明原文链接,违者必究 - :https://www.wolfcode.net/info/240/

分享给朋友:

相关文章

Gin框架参数多次绑定

在我们写的绝大部分的API代码当中,其实都是需要传递参数的,无论是通过 path、query string 还是 body,在 gin 当中,为我们提供了一系列的 binding 方法让我们可以把这些参数绑定到一个对象中,通过还可以通过 struct tag 来对参数进行校验,不知道到大家曾今是否和遇到过相同的困惑:

宝塔WebHook中自动git拉取没有反应解决方法

最近遇到一个比较奇怪的问题,所有操作都完成后,无论怎么测试,git pull一直都不会执行,也没有报错.

推荐一款出色的SSH工具

​Tabby是一款可无限定制的跨平台终端应用,用于本地shell、串行、SSH和Telnet连接。支持SFTP。

一个简单的Golang代码,监控windows进程退出并自动重启

只要修改processName 为你所需要的进程exeprocessName_path 为你所需要的进程路径package main import (     "bytes"   

强烈推荐:一个快速处理json的第三方包

该第三方包采用go语言开发:先来看看官方的案例:package main import "github.com/tidwall/sjson" const json = `{"name":{&quot

gocron数据库表和字段字符集转换为utf8mb4

gocron_sql_convert_to_utf8mb4因为 gocron - 定时任务管理系统 默认表和字段字符集是utf8(也就是utf8mb3),所以在现下很多数据存储会有问题,最为突出的就是emoji表情写了一个简单的转换sql:git地址 有用到的小伙伴可以拿去直接转换

为集群搭建一个定时任务集中调度系统

集群任务下,很多服务器的定时任务都单独集中在相对应的服务器crontab下,即使现在有了类似于宝塔之类的面板,但是定时任务还是得每台服务器单独登入后去配置。是否可以单独在一台机子上,控制所有的集群定时任务呢?答案是肯定的!!!gocron就可以做到,之前博主分享过单机搭建定时任务管理系统,那现在,我

Linux 日志清理

磁盘占用90%,占用过多,分析日志查看原因

如何在Linux上做一个定时任务管理系统

gocron,使用Go语言开发的轻量级定时任务集中调度和管理系统, 用于替代Linux-crontab