如何在 Ubuntu 上安装 EMQX MQTT 服务器

Posted EMQ映云科技

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在 Ubuntu 上安装 EMQX MQTT 服务器相关的知识,希望对你有一定的参考价值。

​EMQX​​​ 是一款全球下载量超千万的大规模分布式物联网 ​​MQTT 服务器​​,自 2013 年在 GitHub 发布开源版本以来,获得了来自 50 多个国家和地区的 20000 余家企业用户的广泛认可,累计连接物联网关键设备超过 1 亿台。

不久前,​​EMQX 发布了 5.0 版本​​​,该版本在消息传输的可靠性、产品体验的易用性等方面也进行了大幅优化升级,是 MQTT 领域的一个里程碑式的成果。在发布前性能测试中,EMQX 团队通过一个 23 节点的集群达成了 ​​1 亿 MQTT 连接​​+每秒 100 万消息吞吐,这使得 EMQX 5.0 成为目前为止全球最具扩展性的 MQTT 服务器。

EMQX 目前支持在 Linux、Windows、macOS、Raspbian 等系统中运行,也支持使用 Docker、Kubernetes、Terraform 部署。本文将以 EMQX 开源版 5.0.4 为例,介绍如何在 Ubuntu 系统中搭建一个单节点的 MQTT 服务器,并对搭建过程中容易遇到的常见问题进行逐一演示。

安装 EMQX

本文使用的演示环境为:阿里云上海区域2核4G(ecs.c7.large),Ubuntu 20.04 64位

使用 APT 安装 EMQX

APT 是 Ubuntu 自带的包管理器,建议优先使用 APT 安装 EMQX。同时,EMQX 也提供了官方的 APT 源及一键式配置脚本,方便用户快速安装 EMQX。

  1. 配置 EMQX APT 源。

curl -s https://assets.emqx.com/scripts/install-emqx-deb.sh | sudo bash

复制如上命令到 Ubuntu 终端下执行,如下图即表示配置成功。

如何在

  1. 安装 EMQX 最新版。

sudo apt-get install emqx

  1. 安装成功后,使用如下命令启动 EMQX。

sudo emqx start

如下图,若启动成功,将会提示:​​EMQX 5.0.4 is started successfully!​​​。若命令长时间无响应,请通过 ​​EMQX 运行情况检查​​ 章节说明查看相关端口是否被占用。

如何在

4.EMQX 管理命令

EMQX 提供了命令行工具,方便用户对 EMQX 进行启动、关闭、进入控制台等操作。如下图,在终端执行​​sudo emqx​​​ 查看 EMQX 相关管理命令。

如何在

使用 tar.gz 包安装 EMQX

当服务器无公网接入或需要快速部署、验证 EMQX 功能时可使用 ​​tag.gz​​ 包安装,该安装方式无任何第三方依赖且管理方便。

下载安装包

访问 EMQX 下载地址 ​​https://www.emqx.io/zh/downloads?os=Ubuntu。选中​​​ ​​Package​​​ 标签,安装包类型选择 ​​Ubuntu20.04 amd64/tag.gz​​,然后点击右边的复制图标(这将会复制整行 wget 下载命令)。

如何在

将下载命令粘贴至服务器命令行终端,执行下载操作。

如何在

解压安装

在服务器终端执行如下命令,该命令将会把压缩包解压至当前目录下的 ​​emqx​​ 目录。

本次演示将会安装在当前用户的家目录下,即 ​​~/emqx/​

mkdir -p emqx && tar -zxvf emqx-5.0.4-ubuntu20.04-amd64.tar.gz -C emqx

接下来可使用如下命令启动 EMQX

./emqx/bin/emqx start

若启动成功,将会提示:​​EMQX 5.0.4 is started successfully!​​​。若命令长时间无响应,请通过 ​​EMQX 运行情况检查​​ 章节说明查看相关端口是否被占用。

EMQX 运行情况检查

端口监听情况

使用命令 ​​netstat -tunlp​​ 检查 EMQX 端口运行情况,默认情况下 EMQX 会启动如下端口,若有异常请检查端口占用情况。

该命令也可在 EMQX 安装前执行,确保相关端口未被占用。

如何在

如何在

访问 Dashboard

EMQX 提供了 Dashboard,以方便用户通过 Web 页面管理、监控 EMQX 并配置所需的功能。EMQX 成功启动之后可以通过浏览器打开 ​​http://localhost:18083/​​(将 localhost 替换为实际 IP 地址)访问 Dashboard。

访问 Dashboard 之前需要确保服务器的防火墙打开了 18083 端口

Dashboard 的默认用户名为 ​​admin​​​,密码为 ​​public​​​,第一次登录成功后会提示修改密码。密码修改完成后,我们也可以在 Settings 页面将 Dahshboard 的语言改为 ​​简体中文​​。

如何在

MQTT 连接测试

接下来我们点击左侧菜单栏里面的 ​​WebSocket 客户端​​ ,该客户端可测试 MQTT over Websocket,验证 MQTT 服务器是否已部署成功。

需要确保防火墙已打开 8083 端口访问权限

连接至 MQTT 服务器

如下图,该工具已根据访问地址自动填充了主机名,我们直接点击​​连接​​按钮。

如何在

如下图,提示连接成功。

如何在

订阅主题

如下图,订阅一个 ​​testtopic​​ 主题。

如何在

消息发布

如下图,我们向 ​​testtopic​​ 发布了两条消息,且接收成功,表明 MQTT 服务器已部署成功且在正常运行。

如何在

至此,我们已完成了 MQTT 服务器的搭建及连接测试,但是该服务器仅仅只能用于测试,若要部署生产环境下可用的 MQTT 服务器,我们还需要进行最重要的认证配置。

配置认证

默认情况下,EMQX 将允许任何客户端连接,直到用户创建了认证器。认证器将根据客户端提供的认证信息对其进行身份验证,只有认证通过,客户端才能成功连接。接下来我们将演示如何使用 EMQX 内置的数据库进行用户名、密码认证。

EMQX 也提供了与多种后端数据库的认证集成支持,包括 mysql、PostgreSQL、MongoDB 和 Redis。

查看文档了解更多认证方式:​​https://www.emqx.io/docs/zh/v5.0/security/authn/authn.html​

创建认证

EMQX 从 5.0 开始支持在 Dashbaord 配置认证,以方便用户能更加方便、快速的创建安全的 MQTT 服务。我们点击 ​​访问控制​​​ 菜单下的 ​​认证​​​ 进入认证配置页面,然后点击最右侧的 ​​创建​​ 按钮。

如何在

选择 ​​Password-Based​​​ 选项,然后点击 ​​下一步​​。

如何在

数据库选择 ​​Built-in Database​​​,然后点击 ​​下一步​​。

如何在

接下来选择账户类型、加密方式、加盐方式,并点击 ​​创建​​。

这里我们使用默认配置,读者可根据业务实际需求进行选择。

如何在

添加用户

认证创建成功后如下图。接下来我们点击 ​​用户管理​​添加用户。

如何在

进入用户管理页面后,我们点击最右侧的 ​​添加​​​ 按钮,并在弹出框里设置用户名与密码,之后点击 ​​保存​​。

如何在

如下图表示创建成功。

如何在

测试认证

接下来我们使用 Dashboard 提供的 Websocket 工具来测试认证是否已配置成功。在连接配置里输入刚才创建的用户名与密码,然后点击​​连接​​。

如何在

将会看到右侧弹窗提示已连接。

如何在

接下来我们使用一个未创建的用户名 ​​test1​​,点击连接将会看到如下连接失败信息。

如何在

至此,我们已完成了 EMQX 的认证配置,搭建了一台可用于生产环境的单节点 MQTT 服务器。若要保证 MQTT 服务器的高可用,还需要创建多个节点的 EMQX 集群,创建集群的具体细节本文不再详述,读者可参考 ​​EMQX 集群文档​​ 进行配置。

版权声明: 本文为 EMQ 原创,转载请注明出处。

原文链接:​​https://www.emqx.com/zh/blog/how-to-install-emqx-mqtt-broker-on-ubuntu​


以上是关于如何在 Ubuntu 上安装 EMQX MQTT 服务器的主要内容,如果未能解决你的问题,请参考以下文章

阿里云下Ubuntu18.04安装部署EMQ X 消息服务器

MQTT(EMQX)

Android使用MQTT通讯

MQTT消息框架paho-mqtt与emqx安装部署与启动,python

在 AWS EKS 上部署 EMQX MQTT 集群

Linux下QT编程之MQTT实战