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

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

原创
作者头像
OpenIM
发布2023-09-12 13:03:17
1.1K0
发布2023-09-12 13:03:17
举报
文章被收录于专栏:IM即时通讯技术IM即时通讯技术

由于OpenIM依赖的组件较多,开发者需求不一,导致OpenIM部署一直被人诟病,经过几次迭代优化,包括依赖的组件compose的一键部署,环境变量设置一次,全局生效,以及脚本重构,目前OpenIM部署比较丝滑,特写文章分享给大家。

OpenIM是什么

OpenIM不是一个独立的聊天产品,它不像telegram、Signal、rocket.chat那样是一个完全独立、可以直接安装使用的聊天应用程序。而是一个开源的即时通讯解决方案,为开发者提供了一系列的工具和服务,以便于他们在自己的应用程序中集成即时通讯功能。Telegram、Signal、rocket.chat等是一些完全独立的聊天应用,用户可以直接下载安装使用,这些应用通常包含了完整的前端界面和后端服务。

OpenIM是一个开源的即时通讯解决方案,包括OpenIMSDK和OpenIMServer两个主要部分。开发者可以使用这些工具和服务在自己的应用程序中实现消息的发送、接收、用户管理、群组管理等功能。

  1. OpenIMSDK: 这是一个软件开发工具包,开发者可以使用这个工具包在自己的应用程序中集成即时通讯功能。OpenIMSDK提供了一系列的API接口,使开发者能够方便地实现消息发送、接收、用户管理、群组管理等功能。该SDK通常包含不同的版本,以适应不同的平台和编程语言,例如iOS、Android、Web、Windows等。
  2. 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普通磁盘即可

golang

1.18及以上

docker

Docker version 24.0.5, build ced0996及以上

git

2.17.1及以上

存储组件

存储组件

建议版本

mongodb

6.0.2及以上

redis

7.0.0及以上

zookeeper

latest

kafka

latest

mysql

5.7及以上

minio

latest

OpenIM不是一个完整的聊天软件,而是开源的即时通讯组件,包括open-im-sdk和open-im-server ,本身不包含账号的注册和登录服务。 为方便大家测试,我们开源了包括登录注册功能的 chat 仓库,同时部署chat和open-im-server,即可搭建一个完整的聊天产品。

一、先部署组件

  1. clone仓库并切换发布分支(release-v3.3及之后的版本)
代码语言:javascript
复制
git clone https://github.com/openimsdk/open-im-server && cd open-im-server 
  1. 设置环境变量
代码语言:javascript
复制
# 一般情况下只需要设置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="./" #设置组件挂载的数据卷目录,默认为./
  1. 部署组件
代码语言:javascript
复制
make init && docker compose up -d
  1. 查看组件状态
代码语言:javascript
复制
docker ps

二、编译/启动/检测/停止open-im-server

  1. 编译
代码语言:javascript
复制
./scripts/build-all-service.sh

2.启动

代码语言:javascript
复制
./scripts/start-all.sh
  1. 检测
代码语言:javascript
复制
./scripts/check-all.sh
  1. 停止
代码语言:javascript
复制
./scripts/stop-all.sh

其它问题

  1. 如想使用某些外部组件,该如何修改
代码语言:javascript
复制
举例说明,如想使用外部的mysql,操作步骤如下:
1.编辑 docker-compose.yml 在此文件中注释掉mysql相关配置项
2.编辑scripts/install/environment.sh 修改mysql的ip port及密码等配置项
3.make init使配置生效
4.docker compose up -d启动组件
  1. 启动顺序
代码语言:javascript
复制
组件->open-im-server->chat 需按照这个顺序启动
  1. docker版本
代码语言:javascript
复制
 新版docker已经整合docker dompose作为其核心功能的一部分,不需单独安装docker-compose
 如果您的docker版本过低,建议升级到新版本,官方使用的是23.0.1版本
  1. 升级问题
代码语言:javascript
复制
如组件账号密码不做修改,则可以直接升级,升级前确保进程都被停止了
  1. 如组件启动后再修改组件密码
代码语言:javascript
复制
1. 需先停掉组件docker
2. 删除整个components目录(如数据不重要)
3. export PASSWORD=newpassword
4. 启动组件docker使密码生效
  1. 更多配置项
代码语言:javascript
复制
不要直接修改config/config.yaml文件,建议编辑scripts/install/environment.sh后 make init 使配置生效
  1. 日志查看
代码语言:javascript
复制
    logs/OpenIM.log.all.*:记录运行时日志
    _output/logs/openim_20230909.log:记录启动日志

三、编译/启动/检测/停止chat

  1. clone仓库并切换发布分支(release-v1.3及之后的版本)
代码语言:javascript
复制
#先回到上一级目录
cd .. 
git clone https://github.com/openimsdk/chat.git && cd chat

2.编译

代码语言:javascript
复制
./scripts/build_all_service.sh

3.启动

代码语言:javascript
复制
./scripts/start_all.sh

4.检测

代码语言:javascript
复制
./scripts/check_all.sh --print-screen

5.停止

代码语言:javascript
复制
./scripts/stop_all.sh

其它问题

  1. 如果zk连接失败
代码语言:javascript
复制
    确认zookeeper的ip端口是否正确。如果组件部署时修改过zookeeper相关配置,则需要修改config/config.yaml文件中的zookeeper配置项
  1. 如果用户注册失败
代码语言:javascript
复制
    确认openIMUrl的ip端口是否正确,如果组件部署时修改过open-im-server的ip和端口,则需要修改config/config.yaml文件中的openIMUrl配置项,确保chat能访问open-im-server的api端口
  1. 日志查看
代码语言:javascript
复制
    logs目录下
    openIM.log:记录启动日志
    chat.log.*:记录运行时日志

四、开放端口

开放 IM 端口

TCP 端口

说明

操作

TCP:10001

ws 协议,消息端口,如消息发送、推送等,用于客户端 SDK

端口放行或 nginx 反向代理,并关闭防火墙

TCP:10002

api 端口,如用户、好友、群组、消息等接口。

端口放行或 nginx 反向代理,并关闭防火墙

TCP:10005

选择 minio 存储时需要(openIM 默认使用 minio 存储)

端口放行或 nginx 反向代理,并关闭防火墙

开放 Chat 端口

TCP 端口

说明

操作

TCP:10008

业务系统,如注册、登录等

端口放行或 nginx 反向代理,并关闭防火墙

TCP:10009

管理后台,如统计、封号等

端口放行或 nginx 反向代理,并关闭防火墙

开放 pc web 端口

TCP 端口

说明

操作

TCP:11001

http://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

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • OpenIM是什么
  • 源码部署
  • 环境及系统要求
  • 存储组件
  • 一、先部署组件
  • 二、编译/启动/检测/停止open-im-server
    • 其它问题
    • 三、编译/启动/检测/停止chat
      • 其它问题
      • 四、开放端口
      • 体验pc web
      • 关于OpenIM
      相关产品与服务
      容器服务
      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
      http://www.vxiaotou.com