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

简介: 本文将以EMQX开源版为例,介绍如何在Ubuntu系统中搭建一个单节点的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 终端下执行,如下图即表示配置成功。

    配置 APT 源.png

  2. 安装 EMQX 最新版。

    sudo apt-get install emqx
  3. 安装成功后,使用如下命令启动 EMQX。

    sudo emqx start

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

    启动 MQTT 服务器.png

  4. EMQX 管理命令

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

    EMQX 管理命令.png

使用 tar.gz 包安装 EMQX

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

下载安装包

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

下载 EMQX.png

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

下载 EMQX1.png

解压安装

在服务器终端执行如下命令,该命令将会把压缩包解压至当前目录下的 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 安装前执行,确保相关端口未被占用。

MQTT 服务器端口.png

表格.png

访问 Dashboard

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

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

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

MQTT Dashboard.png

MQTT 连接测试

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

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

连接至 MQTT 服务器

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

MQTT over WebSocket 连接至 MQTT 服务器.png

如下图,提示连接成功。

MQTT over WebSocket 连接至 MQTT 服务器成功.png

订阅主题

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

MQTT over WebSocket 订阅主题.png

消息发布

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

MQTT over WebSocket 消息发布.png

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

配置认证

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

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

创建认证

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

创建认证.png

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

选择 Password-Based.png

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

选择 Built-in Database.png

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

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

创建认证1.png

添加用户

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

用户管理.png

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

添加用户.png

如下图表示创建成功。

添加用户成功.png

测试认证

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

连接.png

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

MQTT 链接成功.png

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

MQTT 连接失败.png

至此,我们已完成了 EMQX 的认证配置,搭建了一台可用于生产环境的单节点 MQTT 服务器。若要保证 MQTT 服务器的高可用,还需要创建多个节点的 EMQX 集群。

版权声明: 本文为 EMQ 原创,转载请注明出处。
原文链接:​​https://www.emqx.com/zh/blog/how-to-install-emqx-mqtt-broker-on-ubuntu​​

相关实践学习
快速体验阿里云云消息队列RocketMQ版
本实验将带您快速体验使用云消息队列RocketMQ版Serverless系列实例进行获取接入点、创建Topic、创建订阅组、收发消息、查看消息轨迹和仪表盘。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
1月前
|
消息中间件 Ubuntu Java
SpringBoot整合MQTT实战:基于EMQX实现双向设备通信
本教程指导在Ubuntu上部署EMQX 5.9.0并集成Spring Boot实现MQTT双向通信,涵盖服务器搭建、客户端配置及生产实践,助您快速构建企业级物联网消息系统。
470 1
|
1月前
|
Ubuntu 安全 应用服务中间件
详细指南:配置Nginx服务器在Ubuntu平台上
以上步骤涵盖了基本流程:从软件包管理器获取 Ngnix, 设置系统服务, 调整UFW规则, 创建并激活服务器块(也称作虚拟主机), 并进行了初步优化与加固措施。这些操作都是建立在命令行界面上,并假设用户具有必要权限(通常是root用户)来执行这些命令。每个操作都有其特定原因:例如,设置开机启动确保了即使重启后也能自动运行 Ngnix;而编辑server block则定义了如何处理进入特定域名请求等等。
199 18
|
1月前
|
Ubuntu 安全 关系型数据库
安装MariaDB服务器流程介绍在Ubuntu 22.04系统上
至此, 您已经在 Ubuntu 22.04 系统上成功地完成了 MariadB 的标准部署流程,并且对其进行基础但重要地初步配置加固工作。通过以上简洁明快且实用性强大地操作流程, 您现在拥有一个待定制与使用地强大 SQL 数据库管理系统。
141 18
|
1月前
|
Ubuntu 安全 应用服务中间件
详细指南:配置Nginx服务器在Ubuntu平台上
以上步骤涵盖了基本流程:从软件包管理器获取 Ngnix, 设置系统服务, 调整UFW规则, 创建并激活服务器块(也称作虚拟主机), 并进行了初步优化与加固措施。这些操作都是建立在命令行界面上,并假设用户具有必要权限(通常是root用户)来执行这些命令。每个操作都有其特定原因:例如,设置开机启动确保了即使重启后也能自动运行 Ngnix;而编辑server block则定义了如何处理进入特定域名请求等等。
208 17
|
1月前
|
Ubuntu 安全 关系型数据库
安装MariaDB服务器流程介绍在Ubuntu 22.04系统上
至此, 您已经在 Ubuntu 22.04 系统上成功地完成了 MariadB 的标准部署流程,并且对其进行基础但重要地初步配置加固工作。通过以上简洁明快且实用性强大地操作流程, 您现在拥有一个待定制与使用地强大 SQL 数据库管理系统。
131 15
|
1月前
|
存储 Ubuntu iOS开发
在Ubuntu 22.04系统上安装libimobiledevice的步骤
为了获取更多功能或者解决可能出现问题,请参考官方文档或者社区提供支持。
103 14
|
1月前
|
Ubuntu 安全 关系型数据库
安装与配置MySQL 8 on Ubuntu,包括权限授予、数据库备份及远程连接指南
以上步骤提供了在Ubuntu上从头开始设置、配置、授权、备份及恢复一个基础但完整的MySQL环境所需知识点。
278 7
|
1月前
|
消息中间件 人工智能 运维
Ubuntu环境下的 RabbitMQ 安装与配置详细教程
本文聚焦在Ubuntu下RabbitMQ安装与配置教程,旨在帮助读者快速构建稳定可用的消息队列服务。
|
弹性计算 网络协议 Ubuntu
为ECS Ubuntu 18.04实例配置辅助私网IP地址
本文介绍,如何给Ubuntu 18.04系统配置辅助私网ip。
4223 0
为ECS Ubuntu 18.04实例配置辅助私网IP地址
|
1月前
|
存储 缓存 数据挖掘
阿里云目前最便宜云服务器介绍:38元、99元、199元性能,选购攻略参考
轻量应用服务器2核2G峰值200M带宽38元1年;云服务器经济型e实例2核2G3M带宽99元1年;云服务器通用算力型u1实例2核4G5M带宽199元1年。对于还未使用过阿里云服务器的用户来说,大家也不免有些疑虑,这些云服务器性能究竟如何?它们适用于哪些场景?能否满足自己的使用需求呢?接下来,本文将为您全方位介绍这几款云服务器,以供您了解及选择参考。

热门文章

最新文章