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

news2024/12/24 0:24:37

由于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
2. 删除整个components目录(如数据不重要)
3. export PASSWORD=newpassword
4. 启动组件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-screen5.停止./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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1003447.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

淘宝直通车智能计划怎么开?

很多中小卖家不会开直通车,会遇到整个直通车账户亏钱又对店铺没起到正向作用的问题,开车目的也不明确。对于小卖家,店铺最缺的就是流量,那么如何解决流量问题?今天我教大家一种直通车低价引流的打法。 具体步骤&…

【halcon】halcon字符识别——OCR

前言 OCR(Optical Character Recongnition)光学字符识别。 halcon 的OCR,提供了几种方式,我们应该如何选择? 自动文本阅读器(find_text)手动文本阅读器(find_text)自己…

IDEA安装翻译插件

IDEA安装翻译插件 File->Settings->Plugins 在Marketplace中,找到Translation,点击Install 更换翻译引擎 勾选自动翻译文档 翻译 鼠标右击->点击Translate

【Vue】vue2使用vue-pdf预览pdf文件,预览多页,在线预览方式二,vue页面内预览,无需额外pdfjs包,保姆级教程

系列文章目录 【Vue】vue2预览显示quill富文本内容,vue-quill-editor回显页面,v-html回显富文本内容 【Vue】vue2项目使用swiper轮播图2023年8月21日实战保姆级教程 【Vue】vue2使用pdfjs预览pdf文件,在线预览方式一,pdfjs文件包…

手写RPC框架--11.spi机制

spi机制 spi机制a.spi介绍b.缓存spi到本地c.加载spi并将实例缓存d.统一spi加载的配置 spi机制 a.spi介绍 SPI(Service Provider Interface),是JDK内置的一种服务提供发现机制,可以用来启用框架扩展和替换组件,主要是…

Scrum工作模式的角色和活动

​Scrum工作模式是一种敏捷软件开发方法,其核心是团队合作和自我组织,旨在通过短周期的迭代开发,实现快速反馈和持续改进。 Scrum工作模式包括以下角色和活动: 1、产品负责人(Product Owner):…

Spring-Cloud GateWay+Vue 跨域方案汇总

文章目录 一、简介背景和概述 二、前端跨域解决方案Axios跨域CORS跨域 三、后端跨域解决方案反向代理服务器 四、Spring Cloud中的跨域解决方案Gateway网关的跨域配置 五、基于Vue和Spring Cloud的跨域整合实践**这两种配置只需配置一种即可生效(前端or后端&#xf…

Unity和C#游戏编程入门:创建迷宫小球游戏示例

💂 个人网站:【工具大全】【游戏大全】【神级源码资源网】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 当涉及到Unity和C#游戏编…

电脑连接电视怎么做?学会这4个方法,轻松连接!

“我的电脑屏幕太小了,想将它连接到电视上看电影。有什么方法可以将电脑与电视进行连接吗?请教教我!” 在今天的数字时代,将电脑连接到电视已经成为了常见的需求。无论是观看电影、演示文稿还是玩游戏,电脑连接电视可以…

蓝桥杯打卡Day7

文章目录 阶乘的末尾0整除问题 一、阶乘的末尾0IO链接 本题思路:由于本题需要求阶乘的末尾0,由于我们知道2*510可以得到一个0,那么我们就可以找出2的数和5的数,但是由于是阶乘,所以5的数量肯定是小于2的数量&#xf…

leetcode:67. 二进制求和

题目: 函数原型: char * addBinary(char * a, char * b) 思路: 二进制相加,首先我们考虑先将字符串逆序。由此要写一个逆序函数reserve。字符串逆序后,从前往后相加,以较长的字符串的长度为标准长度n&#…

前端vue按钮控制切换按钮是否禁用和颜色和显示隐藏,利用v-if和v-else

效果 未输入input前图片 输入input后图片 html <input type"number" placeholder"请输入分润数量" placeholder-class"shareprofit_placeholder_num" v-model"money"> <!-- 金钱 --> {{money}} <!-- 可提现余额 --&g…

518电脑端抽奖软件,可用作婚庆大屏幕滚动抽奖

518抽奖软件简介 518抽奖软件&#xff0c;518我要发&#xff0c;超好用的年会抽奖软件&#xff0c;简约设计风格。 包含文字号码抽奖、照片抽奖两种模式&#xff0c;支持姓名抽奖、号码抽奖、数字抽奖、照片抽奖。(www.518cj.net) 婚礼抽奖活动意义 抽奖类似于买彩票&#x…

大数据技术之Hive:先导篇(一)

目录 一、什么是Hive 二、思考如何设计出Hive功能 2.1 提问 2.2 案例分析 2.3 小结 三、掌握Hive的基础架构 3.1 Hive组件 - 元数据存储 3.2 Hive组件 - Driver驱动程序 3.3 Hive组件 - 用户接口 一、什么是Hive 什么是分布式SQL计算 我们知道&#xff0c;在进行数据统…

cf 交互题

今天cf遇到了交互题&#xff0c;这个交互题的算法很很很简单&#xff0c;但是在交互上卡了&#xff0c;导致交上的代码都不算罚时。&#xff08;更伤心了。 所以&#xff0c;现在写一下交互题的做法&#xff0c;印象深刻嘛。 交互题&#xff0c;就是跟机器进行交互。你代码运…

开始撸 Android 源码

启动找工作模式&#xff0c;发现无比困难。搁在往日&#xff0c;大龄程序员找工作都是一件困难的事情&#xff0c;加上今年形势很差&#xff0c;更是难上加难。关键是我这十几年来主攻的浏览器内核方向&#xff0c;需求量更是几乎为零。在 BOSS 直聘上以 Chromium 为关键词&…

DeepSpeed

DeepSpeed概念 DeepSpeed中用到的技术包括以下几个等级&#xff1a; ZeRO-1&#xff1a;只对optimizer进行切片后分布式保存 ZeRO-2&#xff1a;对optimizer和grad进行切片后分布式保存 ZeRO-3&#xff1a;对optimizer、grad和模型参数进行切片后分布式保存 offload&#xff1…

【RocketMQ】设计理念与核心概念扫盲

【RocketMQ】设计理念与核心概念扫盲 文章目录 【RocketMQ】设计理念与核心概念扫盲一、RocketMQ的设计理念和目标1.1、设计理念1.2、设计目标 二、RocketMQ的核心概念扫盲篇2.1、部署架构2.1.1、Nameserver2.1.2、Broker2.1.3、Client 2.2、消息订阅模型2.2.1、消费模式2.2.2、…

【C++基础】简单工程模式、工厂模式、抽象工程模式

本文参考&#xff1a;简单工厂模式 - 人造恶魔果实工厂1 | 爱编程的大丙​​​​​​ ​​​​​​工厂模式 - 人造恶魔果实工厂2 | 爱编程的大丙​​​​​ ​​​​​抽象工厂模式 - 弗兰奇一家 | 爱编程的大丙 工厂我们就可以得到想要的东西&#xff0c;在程序设计中&…

Nacos使用和注册部分源码介绍

Nacos简单介绍 Nacos致力于帮助您发现、配置和管理微服务。Nacos提供了一组简单易用的特性集&#xff0c;帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos帮助您更敏捷和容易地构建、交付和管理微服务平台。Nacos是构建以“服务”为中心的现代应用架构 (例…