使用EMQX 安装、部署MQTT 服务器详解
关于Linux下使用EMQX 安装、部署MQTT 服务器详解本文从如下几个方面进行详细说明
1. EMQX整体说明
1.1. EMQX产品概览
EMQX (Erlang/Enterprise/Elastic MQTT Broker) 是基于 Erlang/OTP 平台开发的开源物联网 MQTT 消息服务器。
Erlang/OTP是出色的软实时 (Soft-Realtime)、低延时 (Low-Latency)、分布式 (Distributed)的语言平台。
MQTT 是轻量的 (Lightweight)、发布订阅模式 (PubSub) 的物联网消息协议。
EMQX 设计目标是实现高可靠,并支持承载海量物联网终端的 MQTT 连接,支持在海量物联网设备间低延时消息路由:
1.2. EMQX版本选择
EMQX 提供开源版和企业版下载安装,也提供了全托管的 MQTT 云服务 EMQX Cloud,您可以选择合适您的部署方式,快速开始使用。
1.2.1. EMQX 开源版
大规模可弹性伸缩的云原生分布式物联网 MQTT 消息服务器,高效可靠连接海量物联网设备,高性能实时处理消息与事件流数据,助力构建关键业务的物联网平台与应用。
1.2.2. EMQX Cloud
通过可靠、实时的物联网数据移动、处理和集成,连接您的海量物联网设备。加快您的物联网应用开发,免除基础设施管理维护负担。
1.2.3. EMQX 企业版
「随处运行,无限连接,任意集成」 云原生分布式物联网接入平台,一体化的分布式 MQTT 消息服务和强大的 IoT 规则引擎,为高可靠、高性能的物联网实时数据移动、处理和集成提供动力,助力企业快速构建关键业务的 IoT 平台与应用。
2. 安装EQMX(MQTT服务器)
2.1. 通过源码编译安装
2.1.1. 获取源码
$ git clone https://github.com/emqx/emqx.git
2.1.2. 切换到最近的 Tag
$ cd emqx
$ git checkout $(git describe --abbrev=0 --tags)
2.1.3. 编译
make
2.1.4. 启动 EMQX Broker
$ cd _build/emqx/rel/emqx
$ ./bin/emqx start
EMQX Broker 4.3-beta.1 is started successfully!
$ ./bin/emqx_ctl status
Node 'emqx@127.0.0.1' is started
emqx 4.3-beta.1 is running
2.2. 通过 .deb 包安装
2.2.1. 下载 EMQX 版本的二进制包
访问 Github (https://github.com/emqx/emqx/releases) 下载EMQX 版本的二进制包
2.2.2. 安装 EMQX Broker
安装 EMQX Broker,将下面的路径更改为您下载 EMQX 软件包的路径。
sudo apt install ./emqx-4.4.3-otp24.1.5-3-ubuntu20.04-amd64.deb
或者
./emqx-4.4.3-otp24.1.5-3-ubuntu20.04-amd64.deb
2.2.3. 启动 EMQX Broker
2.2.3.1. 直接启动(后台启动 EMQX)
$ emqx start
emqx 4.0.0 is started successfully!
$ emqx_ctl status
Node 'emqx@127.0.0.1' is started
emqx v4.0.0 is running
2.2.3.2. systemctl 启动
$ sudo systemctl start emqx
2.2.3.3. service 启动
$ sudo service emqx start
2.2.4. 停止 EMQX Broker
$ emqx stop
ok
2.2.5. 卸载 EMQX Broker
sudo apt remove --purge emqx
2.3. 通过docker自动安装
2.3.1. 获取
$ docker pull emqx/emqx:v4.0.0 #通过 Docker Hub获取
2.3.2. 启动 docker 容器
#启动 docker 容器,通过 Docker 运行
$ docker run -d --name emqx -p 1883:1883 -p 8081:8081 -p 8083:8083 -p 8883:8883 -p 8084:8084 -p 18083:18083 emqx/emqx:v4.0.0
若尚未安装docker,请通过如下操作进行docker安装:
sudo su
apt-get update
curl -sSL https://get.docker.com | sh # 安装docker
2.3.3. EMQ的启动和结束
因为我们是用docker下载的,所以需要用docker的一些命令启动和停止EMQ
docker ps -a #查看所有容器
docker start <CONTAINER ID>
docker stop <CONTAINER ID>
docker restart <CONTAINER ID>
2.4. 通过docker手工安装
wget -O emqx-docker.zip https://www.emqx.com/en/downloads/broker/v4.0.0/emqx-docker-v4.0.0-alpine3.10-arm32v7.zip #通过 emqx.io下载 Docker 镜像,并手动加载,这边要注意自己的实际情况
unzip emqx-docker.zip
docker load < emqx-docker-v4.0.0-alpine3.10-arm32v7
#启动 docker 容器,通过 Docker 运行
$ docker run -d --name emqx -p 1883:1883 -p 8081:8081 -p 8083:8083 -p 8883:8883 -p 8084:8084 -p 18083:18083 emqx/emqx:v4.0.0
2.4.1. EMQ的启动和结束
详见 “通过docker自动安装” 章节中的描述。
3. EMQX 常用命令
EMQX 提供了 emqx 命令行工具,方便用户对 EMQX 进行启动、关闭、进入控制台等操作。
后台启动 EMQX Broker;
关闭 EMQX Broker;
重启 EMQX Broker;
使用控制台启动 EMQX Broker;
使用控制台启动 EMQX Broker,与 emqx console 不同,emqx foreground 不支持输入 Erlang 命令;
Ping EMQX Broker。
查看 EMQX 的状态。
EMQX 正常启动:
$ emqx_ctl status
Node 'emqx@127.0.0.1' is started
emqx 4.0.0 is running
EMQX 未能正常启动:
$ emqx_ctl status
Node 'emqx@127.0.0.1' not responding to pings。
你可以查看 logs 下的日志文件并确认是否属于 常见错误
以上命令为用户常用命令,此外 emqx 命令还有一些其他选项为方便开发者使用,普通用户无需关心
4. 登录EMQX(MQTT服务器)
打开浏览器,输入你的ip:18083,如: http://localhost:18083 或者 http://127.0.0.1:18083
网 址:http://127.0.0.1:18083
用户名:admin
密 码:public
4.1. 设置中英文
4.2. 查看订阅情况
5. 通过 mqttbox 工具,进行MQTT消息的订阅、发布测试
前提:已启动 MQTT 服务器(EMQX)
5.1. 下载mqttbox
下载地址:http://workswithweb.com/mqttbox.html
官网打不开的话
链接:https://pan.baidu.com/s/1cKPgbV7OeQisNyNbm-GZYw
提取码:izaw
5.2. 创建 MQTT 客户端
点击Create MQTT Client 按钮来创建一个 MQTT 客户端;
接下来对 MQTT 客户端进行配置,主要是配置好协议端口、连接用户名密码和 QoS 即可;
5.3. 配置MQTT订阅者
再配置一个订阅者,订阅者订阅 testTopicA 这个主题,我们会向这个主题发送消息;
6. 通过MQTTX工具,进行MQTT消息的订阅、发布测试
MQTTX是一款带图形界面的客户端模拟工具,其使用方式与mqttbox类似。
参考:
参考: https://www.emqx.io/docs/zh/v4.3/
参考:https://www.emqx.io/docs/zh/v4.3/getting-started/start.html#%E6%9F%A5%E7%9C%8B-emqx-%E7%9A%84%E7%8A%B6%E6%80%81