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

news/2024/7/10 19:54:43 标签: 开源

由于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.niftyadmin.cn/n/5027097.html

相关文章

ChatGPT充值,银行卡被拒绝,图文教程

目录 前言步骤1. 魔法地址选择2. 选择手机号码(归属地)3. 勾选,服从协议4. 填写信息5. 完善账单地址6. 订阅成功前言 大家好,今天我在订阅ChatGPT4时,遭遇了银行卡被拒绝的尴尬境地。这里有个技巧,助你开心畅享ChatGPT Plus的升级版。 可SiXin我,索取详细图文教程。 …

面渣逆袭:微服务三十三问,两万字图文详解,速收藏

大家好,我是老三,面渣逆袭系列继续,这期给大家带来微服务相关的面试题。 概览 1.什么是微服务? 微服务(Microservices)是一种软件架构风格,将一个大型应用程序划分为一组小型、自治且松耦合的…

D. Cyclic Operations Codeforces Round 897 (Div. 2)

Problem - D - Codeforces 题目大意&#xff1a;有一个长度为n的数组a&#xff0c;每次操作可以选取一个长度为k的所有数互不相同的数组b&#xff0c;令a[bi]b[i%k1]&#xff0c;问能否将一个全为零的数组通过任意次操作得到a 1<k<n<1e5 思路&#xff1a;通过上述操…

WebStorm使用Element组件库

文章目录 WebStorm使用Element组件库1. webstorm使用组件库1.1 webstorm使用vue文件1.2 首先需要安装Element Plus 2. 项目完成引入---按钮组件3. 引入日历组件4. 引入走马灯组件5. image组件5.1 懒加载滚动5.2 大图预览 6. Collapse 折叠面板手风琴组件8. Descriptions 描述列…

Springboot2.7集成websocket及相关问题

1、集成websocket完整代码 导入maven依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dependency> 服务端代码 &#xff08;1&#xff09;注入bean Configur…

Linux 内核镜像分析

文章目录 前言一、概述二、bzImage2.1 镜像分析 三、zImage3.1 镜像分析参考链接 前言 介绍了vmlinux的来源&#xff0c;以及分析方法&#xff1b; 一、概述 在linux系统中&#xff0c;vmlinux&#xff08;vmlinuz&#xff09;是一个包含linux kernel的静态链接的可执行文件…

对缓存穿透、雪崩、击穿的理解,引入分布式锁

缓存实战 1、缓存穿透 先来了解一个小图&#xff0c; 1.1 概念&#xff1a; 缓存穿透指一个一定不存在的数据&#xff0c;由于缓存未命中这条数据&#xff0c;就会去查询数据库&#xff0c;数据库也没有这条数据&#xff0c;所以返回结果是 null。如果每次查询都走数据库&a…

ModuleNotFoundError: No module named ‘_ssl‘

首先强调python版本与openssl版本关系一定要对应上&#xff0c;不然啥错误都能出 这个错误提示表明在您的 Python 环境中缺少 _ssl 模块&#xff0c;这可能是由于缺少 OpenSSL 库或者 Python 编译时未正确链接 OpenSSL 库导致的。 为了解决这个问题&#xff0c;您可以尝试以下…