因为 OpenIM 依赖的组件较多,开发者需要不一,导致 OpenIM 部署始终被人诟病,通过几次迭代优化,包含依赖的组件 compose 的一键部署,环境变量设置一次,全局失效,以及脚本重构,目前 OpenIM 部署比拟丝滑,特写文章分享给大家。OpenIM 是什么 OpenIM 不是一个独立的聊天产品,它不像 telegram、Signal、rocket.chat 那样是一个齐全独立、能够间接装置应用的聊天应用程序。而是一个开源的即时通讯解决方案,为开发者提供了一系列的工具和服务,以便于他们在本人的应用程序中集成即时通讯性能。Telegram、Signal、rocket.chat 等是一些齐全独立的聊天利用,用户能够间接下载安装应用,这些利用通常蕴含了残缺的前端界面和后端服务。OpenIM 是一个开源的即时通讯解决方案,包含 OpenIMSDK 和 OpenIMServer 两个次要局部。开发者能够应用这些工具和服务在本人的应用程序中实现音讯的发送、接管、用户治理、群组治理等性能。OpenIMSDK: 这是一个软件开发工具包,开发者能够应用这个工具包在本人的应用程序中集成即时通讯性能。OpenIMSDK 提供了一系列的 API 接口,使开发者可能不便地实现音讯发送、接管、用户治理、群组治理等性能。该 SDK 通常蕴含不同的版本,以适应不同的平台和编程语言,例如 iOS、Android、Web、Windows 等。OpenIMServer: 这是即时通讯的服务器端组件。它负责管理用户的连贯、音讯的转发、音讯的存储等性能。OpenIMServer 通常部署在云端或者自有的服务器上。该组件通常包含了用户治理、音讯存储、音讯转发、音讯推送、文件传输等模块。OpenIM 的次要劣势是它是开源的,这意味着开发者能够依据本身的需要对其进行定制和扩大。同时,OpenIM 也提供了一系列的文档和示例代码,帮忙开发者更快地了解和应用这个解决方案。此外,OpenIM 通常提供了一套残缺的即时通讯解决方案,包含了客户端和服务器端,这使得开发者可能更加集中精力在本人的应用程序的开发上,而不须要破费太多工夫在即时通讯性能的实现上。
开发者在 app client 中集成 OpenIMSDK,同时编写带有本身业务逻辑的 app Server 代码,通过 REST API 和 callback 和 OpenIMServer 源码部署环境及零碎要求注意事项具体阐明操作系统 linux 零碎即可,Ubuntu 7.5.0-3ubuntu1~18.04 最优,root 用户硬件资源可用内存 2G 以上,用户量小于 10 万,可用单机部署,8C 16G 10Mb 1T 一般磁盘即可 golang1.18 及以上 dockerDocker version 24.0.5, build ced0996 及以上 git2.17.1 及以上存储组件存储组件倡议版本 mongodb6.0.2 及以上 redis7.0.0 及以上 zookeeperlatestkafkalatestmysql5.7 及以上 miniolatestOpenIM 不是一个残缺的聊天软件,而是开源的即时通讯组件,包含 open-im-sdk 和 open-im-server,自身不蕴含账号的注册和登录服务。为不便大家测试,咱们开源了包含登录注册性能的 chat 仓库,同时部署 chat 和 open-im-server,即可搭建一个残缺的聊天产品。一、先部署组件 clone 仓库并切换公布分支(release-v3.3 及之后的版本)git clone https://github.com/openimsdk/open-im-server && cd open-im-server 设置环境变量# 个别状况下只须要设置 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=”./” #设置组件挂载的数据卷目录,默认为./ 部署组件 make init && docker compose up - d 查看组件状态 docker ps
二、编译 / 启动 / 检测 / 进行 open-im-server 编译./scripts/build-all-service.sh 2. 启动./scripts/start-all.sh 检测./scripts/check-all.sh
进行./scripts/stop-all.sh 其它问题如想应用某些内部组件,该如何批改举例说明,如想应用内部的 mysql,操作步骤如下:
1. 编辑 docker-compose.yml 在此文件中正文掉 mysql 相干配置项
2. 编辑 scripts/install/environment.sh 批改 mysql 的 ip port 及明码等配置项
3.make init 使配置失效
4.docker compose up - d 启动组件启动程序组件 ->open-im-server->chat 需依照这个程序启动 docker 版本 新版 docker 曾经整合 docker dompose 作为其外围性能的一部分,不需独自装置 docker-compose
如果您的 docker 版本过低,倡议降级到新版本,官网应用的是 23.0.1 版本升级问题如组件账号密码不做批改,则能够间接降级,降级前确保过程都被进行了如组件启动后再批改组件明码 1. 需先停掉组件 docker
- 删除整个 components 目录(如数据不重要)
- export PASSWORD=newpassword
- 启动组件 docker 使明码失效更多配置项不要间接批改 config/config.yaml 文件,倡议编辑 scripts/install/environment.sh 后 make init 使配置失效日志查看 logs/OpenIM.log.all.*:记录运行时日志
_output/logs/openim_20230909.log:记录启动日志三、编译 / 启动 / 检测 / 进行 chatclone 仓库并切换公布分支(release-v1.3 及之后的版本)# 先回到上一级目录
cd ..
git clone https://github.com/openimsdk/chat.git && cd chat2. 编译./scripts/build_all_service.sh3. 启动./scripts/start_all.sh4. 检测./scripts/check_all.sh –print-screen
5. 进行./scripts/stop_all.sh 其它问题如果 zk 连贯失败 确认 zookeeper 的 ip 端口是否正确。如果组件部署时批改过 zookeeper 相干配置,则须要批改 config/config.yaml 文件中的 zookeeper 配置项如果用户注册失败 确认 openIMUrl 的 ip 端口是否正确,如果组件部署时批改过 open-im-server 的 ip 和端口,则须要批改 config/config.yaml 文件中的 openIMUrl 配置项,确保 chat 能拜访 open-im-server 的 api 端口日志查看 logs 目录下
openIM.log:记录启动日志
chat.log.*:记录运行时日志四、凋谢端口凋谢 IM 端口 TCP 端口阐明操作 TCP:10001ws 协定,音讯端口,如音讯发送、推送等,用于客户端 SDK 端口放行或 nginx 反向代理,并敞开防火墙 TCP:10002api 端口,如用户、好友、群组、音讯等接口。端口放行或 nginx 反向代理,并敞开防火墙 TCP:10005 抉择 minio 存储时须要 (openIM 默认应用 minio 存储) 端口放行或 nginx 反向代理,并敞开防火墙凋谢 Chat 端口 TCP 端口阐明操作 TCP:10008 业务零碎,如注册、登录等端口放行或 nginx 反向代理,并敞开防火墙 TCP:10009 治理后盾,如统计、封号等端口放行或 nginx 反向代理,并敞开防火墙凋谢 pc web 端口 TCP 端口阐明操作 TCP:11001http://ip:11001 拜访 pc web 端口放行或 nginx 反向代理,并敞开防火墙体验 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