openIM本地搭建遇到的问题

openIM本地搭建(虚拟机+js SDK)

本想继续研究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看你的干嘛。

“是不是一定要有所失,才能有所悟”

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
当然,我会为你解释每行代码的作用和功能: ```python # 导入需要的模块 import requests from bs4 import BeautifulSoup # 设置登录和获取数据的URL login_url = 'https://login.taobao.com/member/login.jhtml' qian_niu_url = 'https://qianliexian.taobao.com/?spm=a1z10.1-c-s.w5002-21491447486.2.5d6d4c5fKj9i5b' # 创建一个session session = requests.Session() # 发送get请求到登录页面,获取cookie和其他必要信息 session.get(login_url) # 设置登录需要的参数 username = 'your_username' password = 'your_password' login_data = { 'loginId': username, 'password2': password, 'appName': 'cnalichn', 'appEntrance': 'default', 'bizParams': '', 'styleType': 'auto', 'notLoadSsoView': 'false', 'notKeepLogin': 'true', 'isMobile': 'false', 'cssLink': 'https://g.alicdn.com/aliww/h5.openim.kit/1.0.28/css/kit.css,https://g.alicdn.com/aliww/h5.openim.kit/1.0.28/css/kit-theme.css,https://g.alicdn.com/aliww/h5.openim.kit/1.0.28/css/kit-login.css', 'notKeepUsername': 'true' } # 发送post请求进行登录 session.post(login_url, data=login_data) # 发送get请求到目标页面,获取数据 response = session.get(qian_niu_url) # 使用BeautifulSoup解析页面内容 soup = BeautifulSoup(response.content, 'html.parser') # 获取需要的数据 data = soup.find_all('div', class_='item-info') for item in data: title = item.find('a', class_='item-title').text.strip() price = item.find('span', class_='item-price').text.strip() # 打印数据 print(title, price) ``` 希望这些注释能够帮助你更好地理解这段代码。如果你还有任何疑问,请随时问我。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值