因为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