稳扎稳打 部署丝滑 开源即时通讯(IM)项目OpenIM源码部署流程(linux windows mac)

embedded/2024/12/22 21:33:47/

背景
OpenIM包含多个关键组件,每个都是系统功能必不可少的一部分。具体来说,MongoDB 用于持久化存储;Redis 用作缓存;Kafka 用于消息队列;Zookeeper 用于服务发现;Minio 用于对象存储。这些组件的众多可能会增加部署的复杂性。此外,系统包含多个微服务模块,这要求有效管理进程的启动、停止和监控。为了简化这一过程,我们放弃了传统脚本,转而采用了 mage 这一跨平台方案,兼容所有主流平台和 CPU 架构。本文将详细介绍整个源码部署过程。

OpenIM整体架构
OpenIM主要分为OpenIM SDK和OpenIM Server两大核心部分。这两部分向开发者提供了全套工具和服务,使得即时通讯功能的集成变得简单便捷。功能涵盖了消息的发送与接收、用户管理、群组管理等关键方面。下面提供的OpenIM整体架构图清楚地展示了各组件在系统中的角色和位置,帮助开发者更好地理解和使用这一平台。

在这里插入图片描述

1环境要求
注意事项 详细说明
操作系统 全平台支持(Linux, Windows, Mac)
CPU 支持ARM和AMD架构
硬件资源 至少8GB可用内存
Golang v1.20 或更高
Docker 集成了Compose插件或者使用Docker-compose
Git v2.17.1 或更高

  1. 部署 OpenIM Server (IM)
    2.1 克隆仓库
    使用 main 分支或切换到 release-v3.7 及以后的发布分支:

git clone https://github.com/openimsdk/open-im-server && cd open-im-server
注意:

1.一般建议使用release分支,功能稳定;

2.如果是通过windows下载,再上传到linux,可能会有脚本权限或\r问题,建议 执行命令 find ./ -name “*.sh” | xargs chmod +x,以赋予脚本执行权限;

2.2 部署组件 (MongoDB/Redis/Zookeeper/Kafka/MinIO)
通过Docker Compose启动服务:

docker compose up -d
这一步主要是自动部署所依赖的组件,以及web/admin前端镜像,同时会把端口映射出来,以供openIM访问和外部使用,

如果要修改组件密码,则需要在此命令执行之前修改docker-compose.yml文件。

2.3 设置外网IP
修改配置文件,设置外部访问地址:

在 config/minio.yml 中修改 externalAddress 为 http://外网IP:port

这个是minio的访问地址,如不修改,则无法发送图片视频文件。

在 config/openim-api.yml 中将 grafanaURL: http://127.0.0.1:13000/ 修改为 http://外网IP:port

这个是grafana的访问地址,如不修改,则无法查看统计数据。

这里所谓的外网IP,仅表示用户能通过此IP访问,无所谓是否真正意义的外网IP

2.4 🛠️ 初始化
在第一次编译前执行初始化脚本:

Linux/Mac 平台:

bash bootstrap.sh
Windows 平台:

bootstrap.bat
这里主要是下载mage,前提是能本机访问github,同时已经安装了go

2.5 🛠️ 编译
适用于Linux/Windows/Mac平台:

mage
这里需要先下载依赖,所以第一次编译可能会比较慢,大概需要3-5分钟,建议设置go代理

在这里插入图片描述

2.6 🚀 启动/停止/检测
适用于Linux/Windows/Mac平台:

启动:

mage start

在这里插入图片描述

后台启动并收集日志:

nohup mage start >> _output/logs/openim.log 2>&1 &
停止:

mage stop

在这里插入图片描述

检测:

mage check

在这里插入图片描述

  1. 部署 App Server (Chat)
    3.1 clone仓库 使用main分支或切换到release-v1.7或以后的release分支
    git clone https://github.com/openimsdk/chat&& cd chat
    3.2 🛠️ 初始化
    第一次编译前,linux/mac平台下执行:

bash bootstrap.sh
windows执行

bootstrap.bat
3.3 🛠️ 编译(linux/windows/mac平台均可用)
mage
3.4 🚀 启动/停止/检测(linux/windows/mac平台均可用)

启动

mage start

后台启动 收集日志

nohup mage start >> _output/logs/chat.log 2>&1 &

停止

mage stop

检测

mage check
关于我们
得益于广泛的开发者支持,OpenIM在开源即时通讯(IM)领域保持领先地位,目前在GitHub上的星标已超过13k。在政府和企业领域,随着信息技术的快速发展和创新产业的广泛应用,对IM的需求正急速增长。此外,随着协同办公软件市场的持续扩展,“安全可控”已成为最关键的要求之一。

在后AIGC时代,IM作为人机交互的首要接口,其价值势必会越来越大。我们期待OpenIM在后AIGC时代能发挥更大的作用,使每一个应用都能集成OpenIM,提升整体效率和安全性。

github: https://github.com/openimsdk

developer: https://docs.openim.io/zh-Hans/

在这里插入图片描述


http://www.ppmy.cn/embedded/24100.html

相关文章

为什么选择OpenNJet?OpenNJet下一代云原生应用引擎!OpenNJet开发实战!

前言导读 在当今这个数字化转型加速的时代,云原生技术已成为企业和开发者构建现代应用的首选路径。OpenNJet作为新一代云原生应用引擎,在国内外技术社区受到了广泛关注。 本文将深入探讨OpenNJet的特点、优势以及在开发实践中的应用,带您全…

嵌入式开发_DMA详解

在嵌入式开发的广阔天地中,MCU是众多开发者手中的利器。而DMA(Direct Memory Access,直接内存访问)技术,则如同一位高效的快递小哥,穿梭于处理器与外设之间,无需CPU亲自出马,高效地搬…

格雷希尔E10系列大电流测试连接器,在新能源汽车大电流接插件的电气测试方案

在新能源汽车的电驱动、电池包等设备的电测试处理中,格雷希尔E10系列电测试连接器具有显著的优势。E10系列的核心设计——插孔/插针,可以达到实验室10万次的插拔寿命,相比传统公母电接头500次左右的连接寿命,E10系列无疑大大减少测…

c++ 原子操作

虽然原子操作通常被称为“无锁”,但实际上它们在内部可能使用了锁来保证操作的原子性。然而,与传统的锁相比,原子操作通常具有更轻量级的实现,因为它们只涉及一个共享变量,而不需要对整个临界区进行加锁。 原子操作通…

R可视化:Venn图进阶版本

前言 最近看到一张不一样的韦恩图,添加了上下调基因数目的韦恩图,将其实现一下,用于自己的研究展示。 导入R包和数据 library(dplyr) library(tibble) library(ggplot2) library(ggVennDiagram) library(ggpubr) library(data.table)subgrp <- c("HC", &quo…

2024.4.23 LoadRunner 测试工具详解 —— VUG

目录 引言 LoadRunner 三大组件之间的关系 LoadRunner 脚本录制 启动并访问 WebTours 脚本录制 编译 运行&#xff08;回放&#xff09; LoadRunner 脚本加强 事务插入 插入集合点 插入检查点 参数化 ​编辑 打印日志 引言 问题&#xff1a; 此处为啥选择使用 Lo…

Linux第十五章

&#x1f436;博主主页&#xff1a;ᰔᩚ. 一怀明月ꦿ ❤️‍&#x1f525;专栏系列&#xff1a;线性代数&#xff0c;C初学者入门训练&#xff0c;题解C&#xff0c;C的使用文章&#xff0c;「初学」C&#xff0c;linux &#x1f525;座右铭&#xff1a;“不要等到什么都没有了…

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单人脸检测/识别实战案例 之八 简单进行鼻子检测并添加特效的功能实现

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单人脸检测/识别实战案例 之八 简单进行鼻子检测并添加特效的功能实现 目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单人脸检测/识别实战案例 之八 简单进行鼻子检测并添加特效的功能实现 一、简单介绍 二、简单…