赞
踩
本想继续研究dubbo的,由于项目需要,需要集成一个即时通讯的这样一个东西,公司领导推荐了这个开源的openIM,话不多说。
官网地址:
https://doc.rentsoft.cn/#/introduce/production_introduce
研究开源的东西,官方文档是一定要看,如果有官方的技术交流群最好也加进去,这个就有交流群,在官方文档里就有相关的信息,有兴趣自行加入。
官方文档里有快速部署和源码部署,快速部署就是使用docker-compose一键部署,当然这个需要了解一些这方面的知识,源码部署就需要自己手动安装需要的组件,kafka,mysql,MongoDB,etcd,redis。然后执行相应的脚本就可以,这些官方文档上都有相关信息,不想多说。
主要记录一下自己部署的时候遇到的问题,我是用虚拟机部署的server,然后本地启动的官网上提供的js SDK。
首先遇到的第一个问题就是:
panic: kafka: client has run out of available brokers to talk to (Is your cluster reachable?)
在日志里一直在报这个错误,可以看出来是kafka的问题,我没有用过kafka,所以不是很熟悉,第一时间肯定想到去百度,相关的博客有很多,跟着弄了,但是都不能解决,最后还是在官方的技术交流群里一位大佬的提示下,想到了单独启动kafka看看有什么报错信息
还是用docker-compose启动zookeeper和kafka,所以先弄一个docker-compose.yaml文件
version: "3" services: zookeeper: image: wurstmeister/zookeeper ports: - 2181:2181 container_name: zookeeper volumes: - /etc/localtime:/etc/localtime environment: TZ: Asia/Shanghai restart: always kafka: image: wurstmeister/kafka container_name: kafka restart: always ports: - 9092:9092 environment: TZ: Asia/Shanghai KAFKA_BROKER_ID: 0 KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 KAFKA_CREATE_TOPICS: "ws2ms_chat:8:1,ms2ps_chat:8:1,msg_to_mongo:8:1" KAFKA_ADVERTISED_LISTENERS: INSIDE://127.0.0.1:9092,OUTSIDE://103.116.45.174:9092 KAFKA_LISTENERS: INSIDE://:9092,OUTSIDE://:9093 KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: "INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT" KAFKA_INTER_BROKER_LISTENER_NAME: INSIDE depends_on: - zookeeper
想要copy的注意下缩进,然后docker-compose up,这里不要加-d,因为需要看到日志,加了-d的意思就是后台运行
然后果然看到了报错:
library initialization failed - unable to allocate file descriptor table - out of memory
百度这个错误,这个自行百度一下吧,有很多说法,我暂时不想理会,主要就是修改了docker的启动参数
文件地址:/lib/systemd/system/docker.service
在这个文件中找到ExecStart=/usr/bin/dockerd这一行,在这一行后面加上–default-ulimit nofile=65536:65536,注意加个空格。然后执行systemctl restart docker,重启一下。再去启动server就可以解决这个问题了。
从这可以看出,看日志还是要直接看,官方封装的openIM.log里的日志说实话真是找不到原因,我为此耽误了快一周的时间也没有解决这个问题,交流群里问官方的人没人理,还是群里一位网名“知行合一”的大佬指点了我几句,因为是kafaka的问题,首先排除不可能是源码连接kafka的问题,因为其他人没有出现这个问题,排除了源码,那就是kafka启动的问题,启动的日志可以只用用docker-compose启动去看,不要看官方的日志。这才真正定位了问题所在。
然后server启动成功之后,这里说一下,server启动成功是这样的,执行./docker_check_service.sh这个脚本,输出如下图
server启动成功之后本地启动web项目,这倒是没出现什么大问题,按照官方文档上去执行,出现了这个问题:
Error error0308010Cdigital envelope routinesunsupported
解决办法就是执行set NODE_OPTIONS=–openssl-legacy-provider,前端我不太懂,网上说是因为版本不兼容导致出现了这个问题
参考:https://blog.csdn.net/qq_41838435/article/details/128198169
紧接着我注册了两个用户来测试发消息,但是发现不能发送文件
可以看到是这样的,这里默认上传文件用的是minio,第一时间想到肯定是这块的配置是不是要改什么,没有头绪,又去群里问了一下,又是 “知行合一”这位大佬出来指点了几句,在/config/usualConfig.yaml这个配置文件里有这个网址:
这个IP地址在你的浏览器上要能够访问,也就是telnet可以通,我这里已经改成了内网ip,执行脚本的时候这里会被替换成虚拟机的公网ip,但是我的虚拟机公网ip这个10005端口是不通的,但是内网ip是通的。
本地部署主要遇到的就是这几个问题,其中第一个差点让我崩溃,或者说已经让我崩溃,还好没放弃,遇到了 “知行合一”大佬,所以我觉得研究开源的东西还是要在群里多交流,官方文档也一定要仔细看,但是这个openIM的官方文档我只想呵呵,按照他们的文档弄,居然还会有很多问题,而且去网上百度一些问题,博客里写的全是copy官方文档里的流程,毫无价值,这还让人怎么用。其实我有点不懂这些写这种千篇一律的博客的人在想什么,你要干什么,你写的那篇东西是在糊弄你自己么,证明你写了博客么,对你自己来说,你真的去部署了么,对于看你博客的人来说,全是官方文档上的东西,我tm看你的干嘛。
“是不是一定要有所失,才能有所悟”
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。