写点什么

开源即时通讯(IM)项目 OpenIM 源码部署流程

作者:Geek_1ef48b
  • 2023-09-12
    云南
  • 本文字数:2527 字

    阅读完需:约 8 分钟

由于 OpenIM 依赖的组件较多,开发者需求不一,导致 OpenIM 部署一直被人诟病,经过几次迭代优化,包括依赖的组件 compose 的一键部署,环境变量设置一次,全局生效,以及脚本重构,目前 OpenIM 部署比较丝滑,特写文章分享给大家。

OpenIM 是什么

OpenIM 不是一个独立的聊天产品,它不像 telegram、Signal、rocket.chat 那样是一个完全独立、可以直接安装使用的聊天应用程序。而是一个开源的即时通讯解决方案,为开发者提供了一系列的工具和服务,以便于他们在自己的应用程序中集成即时通讯功能。Telegram、Signal、rocket.chat 等是一些完全独立的聊天应用,用户可以直接下载安装使用,这些应用通常包含了完整的前端界面和后端服务。

OpenIM 是一个开源的即时通讯解决方案,包括 OpenIMSDK 和 OpenIMServer 两个主要部分。开发者可以使用这些工具和服务在自己的应用程序中实现消息的发送、接收、用户管理、群组管理等功能。

  1. OpenIMSDK: 这是一个软件开发工具包,开发者可以使用这个工具包在自己的应用程序中集成即时通讯功能。OpenIMSDK 提供了一系列的 API 接口,使开发者能够方便地实现消息发送、接收、用户管理、群组管理等功能。该 SDK 通常包含不同的版本,以适应不同的平台和编程语言,例如 iOS、Android、Web、Windows 等。

  2. OpenIMServer: 这是即时通讯的服务器端组件。它负责管理用户的连接、消息的转发、消息的存储等功能。OpenIMServer 通常部署在云端或者自有的服务器上。该组件通常包括了用户管理、消息存储、消息转发、消息推送、文件传输等模块。

OpenIM 的主要优势是它是开源的,这意味着开发者可以根据自身的需求对其进行定制和扩展。同时,OpenIM 也提供了一系列的文档和示例代码,帮助开发者更快地理解和使用这个解决方案。

此外,OpenIM 通常提供了一套完整的即时通讯解决方案,包括了客户端和服务器端,这使得开发者能够更加集中精力在自己的应用程序的开发上,而不需要花费太多时间在即时通讯功能的实现上。


开发者在 app client 中集成 OpenIMSDK,同时编写带有自身业务逻辑的 app Server 代码,通过 REST API 和 callback 和 OpenIMServer


源码部署

环境及系统要求

存储组件

OpenIM 不是一个完整的聊天软件,而是开源的即时通讯组件,包括 open-im-sdk 和 open-im-server ,本身不包含账号的注册和登录服务。 为方便大家测试,我们开源了包括登录注册功能的 chat 仓库,同时部署 chat 和 open-im-server,即可搭建一个完整的聊天产品。


一、先部署组件

  1. clone 仓库并切换发布分支(release-v3.3 及之后的版本)

git clone https://github.com/openimsdk/open-im-server && cd open-im-server 
复制代码
  1. 设置环境变量

# 一般情况下只需要设置mysql/mongodb/redis/minio组件密码PASSWORD,如未设置,则为默认密码openIM123# export PASSWORD="openIM123" # 设置mysql/mongodb/redis/minio组件密码,至少8位,不能包含特殊字符,默认是openIM123  # export USER="root" # 设置mysql/mongodb/redis/minio用户名,目前只支持root# export API_URL="http://127.0.0.1:10002" # 内网环境下,需设置 OpenIM Server API 提供服务的地址,外网环境下会自动获取# export DATA_DIR="./" #设置组件挂载的数据卷目录,默认为./
复制代码
  1. 部署组件

make init && docker compose up -d
复制代码
  1. 查看组件状态

docker ps
复制代码



二、编译/启动/检测/停止 open-im-server

  1. 编译

./scripts/build-all-service.sh
复制代码

2.启动

./scripts/start-all.sh
复制代码
  1. 检测

./scripts/check-all.sh
复制代码



  1. 停止

./scripts/stop-all.sh
复制代码

其它问题

  1. 如想使用某些外部组件,该如何修改

举例说明,如想使用外部的mysql,操作步骤如下:1.编辑 docker-compose.yml 在此文件中注释掉mysql相关配置项2.编辑scripts/install/environment.sh 修改mysql的ip port及密码等配置项3.make init使配置生效4.docker compose up -d启动组件
复制代码
  1. 启动顺序

组件->open-im-server->chat 需按照这个顺序启动
复制代码
  1. docker 版本

 新版docker已经整合docker dompose作为其核心功能的一部分,不需单独安装docker-compose 如果您的docker版本过低,建议升级到新版本,官方使用的是23.0.1版本
复制代码
  1. 升级问题

如组件账号密码不做修改,则可以直接升级,升级前确保进程都被停止了
复制代码
  1. 如组件启动后再修改组件密码

1. 需先停掉组件docker2. 删除整个components目录(如数据不重要)3. export PASSWORD=newpassword4. 启动组件docker使密码生效
复制代码
  1. 更多配置项

不要直接修改config/config.yaml文件,建议编辑scripts/install/environment.sh后 make init 使配置生效
复制代码
  1. 日志查看

    logs/OpenIM.log.all.*:记录运行时日志    _output/logs/openim_20230909.log:记录启动日志
复制代码


三、编译/启动/检测/停止 chat

  1. clone 仓库并切换发布分支(release-v1.3 及之后的版本)

#先回到上一级目录cd .. git clone https://github.com/openimsdk/chat.git && cd chat
复制代码

2.编译

./scripts/build_all_service.sh
复制代码

3.启动

./scripts/start_all.sh
复制代码

4.检测

./scripts/check_all.sh --print-screen
复制代码



5.停止

./scripts/stop_all.sh
复制代码

其它问题

  1. 如果 zk 连接失败

    确认zookeeper的ip端口是否正确。如果组件部署时修改过zookeeper相关配置,则需要修改config/config.yaml文件中的zookeeper配置项
复制代码
  1. 如果用户注册失败

    确认openIMUrl的ip端口是否正确,如果组件部署时修改过open-im-server的ip和端口,则需要修改config/config.yaml文件中的openIMUrl配置项,确保chat能访问open-im-server的api端口
复制代码
  1. 日志查看

    logs目录下    openIM.log:记录启动日志    chat.log.*:记录运行时日志
复制代码


四、开放端口

开放 IM 端口

开放 Chat 端口

开放 pc web 端口

体验 pc web

浏览器输入 http://ip:11001 访问 pc web,注意此 ip 为服务器 ip,确保 pc 端能访问 先通过手机号注册,验证码默认为 666666


关于 OpenIM

得益于广大开发者的支持,OpenIM 在开源 IM 领域中保持着领先地位,目前在 Github 上的星标数量已超过 12k。在当前数据和隐私安全受到重视的背景下,IM 的私有部署需求逐渐增长,这与国内软件产业的崛起趋势相吻合。特别是在政企领域,随着信息技术的快速发展和创新产业的应用,对 IM 的需求迅速增长。更进一步,协同办公软件市场持续扩大,其中“安全可控”已经被视为最关键的属性。

github: https://github.com/OpenIMSDK/ website: https://www.openim.online/zh developer: https://doc.rentsoft.cn/sdks/quickstart


用户头像

Geek_1ef48b

关注

还未添加个人签名 2021-08-25 加入

还未添加个人简介

评论

发布
暂无评论
开源即时通讯(IM)项目OpenIM源码部署流程_Geek_1ef48b_InfoQ写作社区