前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >稳扎稳打 部署丝滑 开源即时通讯(IM)项目OpenIM源码部署流程(linux windows mac)

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

原创
作者头像
OpenIM
发布2024-04-29 20:44:55
1300
发布2024-04-29 20:44:55

背景

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 或更高

2. 部署 OpenIM Server (IM)

2.1 克隆仓库

使用 main 分支或切换到 release-v3.7 及以后的发布分支:

代码语言:javascript
复制
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启动服务:

代码语言:javascript
复制
docker compose up?-d

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

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

2.3 设置外网IP

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

  • config/minio.yml 中修改 externalAddresshttp://外网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 平台:
代码语言:javascript
复制
bash?bootstrap.sh
  • Windows 平台:
代码语言:javascript
复制
bootstrap.bat

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

2.5 ?? 编译

适用于Linux/Windows/Mac平台:

代码语言:javascript
复制
mage

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

图片
图片

2.6 ? 启动/停止/检测

适用于Linux/Windows/Mac平台:

  • 启动:
代码语言:javascript
复制
mage?start
图片
图片
  • 后台启动并收集日志:
代码语言:javascript
复制
nohup mage?start?>> _output/logs/openim.log?2>&1 &
  • 停止:
代码语言:javascript
复制
mage?stop
图片
图片
  • 检测:
代码语言:javascript
复制
mage check

3. 部署 App Server (Chat)

3.1 clone仓库 使用main分支或切换到release-v1.7或以后的release分支

代码语言:javascript
复制
git clone https://github.com/openimsdk/chat&& cd chat

3.2 ?? 初始化

第一次编译前,linux/mac平台下执行:

代码语言:javascript
复制
bash bootstrap.sh

windows执行

代码语言:javascript
复制
bootstrap.bat

3.3 ?? 编译(linux/windows/mac平台均可用)

代码语言:javascript
复制
mage

3.4 ? 启动/停止/检测(linux/windows/mac平台均可用)

代码语言:javascript
复制
# 启动
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/

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • OpenIM整体架构
  • 1环境要求
  • 2. 部署 OpenIM Server (IM)
    • 2.1 克隆仓库
      • 2.2 部署组件 (MongoDB/Redis/Zookeeper/Kafka/MinIO)
        • 2.3 设置外网IP
          • 2.4 ?? 初始化
            • 2.5 ?? 编译
              • 2.6 ? 启动/停止/检测
              • 3. 部署 App Server (Chat)
                • 3.1 clone仓库 使用main分支或切换到release-v1.7或以后的release分支
                  • 3.2 ?? 初始化
                    • 3.3 ?? 编译(linux/windows/mac平台均可用)
                      • 3.4 ? 启动/停止/检测(linux/windows/mac平台均可用)
                      • 关于我们
                      相关产品与服务
                      云数据库 Redis
                      腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
                      http://www.vxiaotou.com