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

由于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.mzph.cn/news/81623.shtml

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

相关文章

2023CSP游寄

初赛 DAY -2 才刚考开学测就来初赛。 复赛之后就是月测,这就是初三吗。 初中最后一次 CSP,如果 S 没一等就得摆烂了。希望别因为各种原因爆炸。 中午下午借着刷初赛题的名义摆烂,半道题都没写。 CSP2023RP 初赛 DAY -1 看我发现了什么。…

SpringBoot 集成 SpringSecurity 从入门到深入理解

完整的目录 介绍 SpringSecurity简述 SpringSecuritySpringSecurity 的主要功能说明 项目源码入门案例项目工程路径第一步:加载依赖第二步:创建核心的配置类第三步:增加controller第三步:启动程序小结界面跳转说明密码生成说明 重…

使用Python来写模拟Xshell实现远程命令执行与交互

一、模块 这里使用的是 paramiko带三方库 pip install paramiko二、效果图 三、代码实现(这里的IP,用户名,密码修改为自己对应服务器的) import paramiko import timeclass Linux(object):# 参数初始化def __init__(self, ip, us…

python 使用requests爬取百度图片并显示

爬取百度图片并显示 引言一、图片显示二、代码详解2.1 得到网页内容2.2 提取图片url2.3 图片显示 三、完整代码 引言 爬虫(Spider),又称网络爬虫(Web Crawler),是一种自动化程序,可以自动地浏览…

【前端知识】Three 学习日志(四)—— 相机控件

Three 学习日志&#xff08;四&#xff09;—— 相机控件 一、引入相机控件 <!-- 引入相机控件 --> <script type"importmap">{"imports": {"three": "../build/three.module.js","three/addons/": "../…

C#,数值计算——Hashtable的计算方法与源程序

1 文本格式 using System; using System.Collections; using System.Collections.Generic; namespace Legalsoft.Truffer { public abstract class Hashtable<K> { private int nhash { get; set; } private int nmax { get; set; } pr…

Vue3记录

Vue3快速上手 1.Vue3简介 2020年9月18日&#xff0c;Vue.js发布3.0版本&#xff0c;代号&#xff1a;One Piece&#xff08;海贼王&#xff09;耗时2年多、2600次提交、30个RFC、600次PR、99位贡献者github上的tags地址&#xff1a;https://github.com/vuejs/vue-next/releas…

Vue3搭配Element Plus 实现候选搜索框效果

直接上代码 <el-col :span"14" class"ipt-col"><el-input v-model"projectName" class"w-50 m-2" input"inputChange" focus"inputFocusFn" blur"inputBlurFn" placeholder"请输入项目名…

同样的UWB,为什么定位精度差很多?

纵观以UWB技术为核心的应用与电厂、化工厂等工业企业人员定位系统&#xff0c;在定位精度上都声称能够达到厘米级精准&#xff0c;然而实际应用上却总是差了些许意思。任何产品都有理论值与实际值&#xff0c;例如某些新能源汽车号称标准续航300公里&#xff0c;但实际上可能连…

【面试题】智力题

文章目录 腾讯1000瓶毒药里面只有1瓶是有毒的&#xff0c;问需要多少只老鼠才能在24小时后试出那瓶有毒。有两根不规则的绳子&#xff0c;两根绳子从头烧到尾均需要一个小时&#xff0c;现在有一个45分钟的比赛&#xff0c;裁判员忘记带计时器&#xff0c;你能否通过烧绳子的方…

C++---异常处理

异常处理 异常处理try语句块和throw表达式异常的抛出和捕获异常的抛出和匹配原则 异常安全异常规范标准异常 异常处理 异常是指存在于运行时的反常行为&#xff0c;这些行为超出了函数正常功能的范围。当程序的某部分检测到一个他无法处理的问题时&#xff0c;需要用到异常处理…

transforms数据预处理【图像增强】 ->(个人学习记录笔记)

文章目录 1. 安装2. transforms——Crop 裁剪2.1 transforms.CenterCrop2.2 transforms.RandomCrop2.3 transforms.RandomResizedCrop2.4 transforms.FiveCrop2.5 transforms.TenCrop 3. transforms——Flip 翻转3.1 transforms.RandomHorizontalFlip3.2 transforms.RandomVert…

leetcode 817. 链表组件(java)

链表组件 题目描述HashSet 模拟 题目描述 给定链表头结点 head&#xff0c;该链表上的每个结点都有一个 唯一的整型值 。同时给定列表 nums&#xff0c;该列表是上述链表中整型值的一个子集。 返回列表 nums 中组件的个数&#xff0c;这里对组件的定义为&#xff1a;链表中一段…

zabbix学习1--zabbix6.x单机

文章目录 1. 环境2. MYSQL8.02.1 单节点2.2 配置主从 3. 依赖组件4. zabbix-server5. agent5.1 yum5.2 编译 附录my.cnfJDK默认端口号 1. 环境 进入官网查看所需部署环境配置以及应用版本要求https://www.zabbix.com/documentation/current/zh/manual/installation/requiremen…

MySQL 解决数据重复添加

1. sql语句: insert ignore into insert ignore into 表名 (xx1,xx2,xx3) VALUES (#{xx1},#{xx2},#{xx3}) 2. 复合索引

7-38 掉入陷阱的数字

输入样例: 5 输出样例: 1:16 2:22 3:13 4:13 ACcode: #include <bits/stdc.h>using namespace std;int main(){int n;cin >> n;vector<int> ans;int limit 1;ans.push_back(n);for(int i0; i<limit; i){//各位数字的和int sum 0;int num ans[i];w…

echarts的折线图,在点击图例后,提示出现变化,不报错。tooltip的formatter怎么写

在点击图例的年后&#xff0c;提示框会相应的变化&#xff0c;多选和单选都会响应变化。tooptip的重度在formatter tooltip:{show:true,trigger:"axis",alwaysShowContent:true,triggerOn:"mousemove",textStyle:{color:"#fff"},backgroundColor…

平板用的触控笔什么牌子好?开学值得推荐的ipad手写笔

在开学季有什么电容笔值得购买&#xff1f;和以往的电容笔比起来&#xff0c;目前的电容笔多出了许多新的功能&#xff0c;比如具备了防误触功能&#xff0c;可以防止手指无意中碰到屏幕而导致书写失灵&#xff0c;以及可以随意调节笔画的粗细等等。苹果原装的Pencil如今卖得非…

微信小程序 按钮颜色

<button type"primary">主要按钮样式类型</button> <button type"default">默认按钮样式类型</button> <button type"warn">警告按钮样式类型</button> <view>按钮plain是否镂空</view> <bu…

1.简单工厂模式

UML类图 代码 main.cpp #include <iostream> #include "OperationFactory.h" using namespace std;int main(void) {float num1;float num2;char operate;cin >> num1 >> num2 >> operate;Operation* oper OperationFactory::createOpera…