文章目录

  • B站视频
  • 简述
  • 服务器配置
  • 安装
  • 关于8083、8084端口
  • EMQX基本命令
  • EMQX配置文件
  • 其他命令


B站视频

4分钟快速搭建个人MQTT服务器(基于EMQX)

简述

相信看到这篇教程的人应该对MQTT协议有了一定的了解。其实提供MQTT服务的厂商也有很多,比较知名的有EMQX等。EMQX虽然提供了免费的公共MQTT5服务器

但是对于多个用户利用公共服务器同时订阅或发布同一主题内容时,可能会接收到其他设备发布但是我们并不想接收的消息。

下面教大家如何利用已有服务器(教程以阿里云ECS为例,系统为Ubuntu20.04 64位)搭建一个个人的基于EMQX的MQTT服务器(EMQX官方文档)。

服务器配置

EMQX端口配置

端口号

服务

1883

MQTT TCP 端口

8883

MQTT TCP/ssl 端口

8084

MQTT Websocket/wss 端口

8083

MQTT Websocket/ws 端口

8081

HTTP API端口

18083

DashBoard 控制台端口

根据需求,在服务器安全组打开对应端口:

云平台通过MQTT向智能控制系统发送指令 自建mqtt云平台_服务器

如果服务器安装了宝塔面板也需要在宝塔面板的【安全】页面开启端口:

云平台通过MQTT向智能控制系统发送指令 自建mqtt云平台_服务器_02

安装

远程连接服务器,输入命令:

根据自己服务器系统或emqx需求版本的不同,参照emqx官方的emqx版本选择进行版本选择安装(Ubuntu20.04 64位可以直接跟着本文操作)

  1. 下载 deb包
wget https://www.emqx.com/zh/downloads/broker/4.4.3/emqx-4.4.3-otp24.1.5-3-ubuntu20.04-amd64.deb

云平台通过MQTT向智能控制系统发送指令 自建mqtt云平台_网络_03

  1. 安装
sudo apt install ./emqx-4.4.3-otp24.1.5-3-ubuntu20.04-amd64.deb
  1. 启动emqx
emqx start

此时直接访问ip:18083即可进入Dashboard登录界面

云平台通过MQTT向智能控制系统发送指令 自建mqtt云平台_TCP_04

初始用户密码为

Username:admin

Password:public

云平台通过MQTT向智能控制系统发送指令 自建mqtt云平台_服务器_05

尝试使用MQTTX访问服务器:

云平台通过MQTT向智能控制系统发送指令 自建mqtt云平台_网络_06

连接成功:

云平台通过MQTT向智能控制系统发送指令 自建mqtt云平台_配置文件_07

1883端口连接成功!

发布、订阅同一主题:

云平台通过MQTT向智能控制系统发送指令 自建mqtt云平台_websocket_08

可以看到发布与订阅功能均能够使用。

1883端口能够实现TCP通信,至此,一个MQTT服务器已搭建完成。

关于8083、8084端口

但此时我们的8084端口其实是无法连接的,是因为我们没有给emqx配置ssl证书。

云平台通过MQTT向智能控制系统发送指令 自建mqtt云平台_TCP_09


因为涉及到域名绑定问题,择日会更新关于连接emqx的ws,wss服务端口(8083、8084)的教程。因为如果使用小程序连接mqtt服务器的话,服务器必须支持wss协议通信。

可以持续关注博客或关注博主b站动态:到底文不文SAMA获取最新消息。

EMQX基本命令

命令

含义

emqx start

后台启动 EMQX Broker

emqx stop

关闭 EMQX Broker

emqx restart

重启 EMQX Broker

emqx console

使用控制台启动 EMQX Broker

emqx foreground

使用控制台启动 EMQX Broker,与 emqx console 不同,emqx foreground 不支持输入 Erlang 命令

emqx ping

Ping EMQX Broker

EMQX配置文件

/etc/emqx目录下

云平台通过MQTT向智能控制系统发送指令 自建mqtt云平台_网络_10

配置文件

说明

emqx.conf

EMQX 配置文件

acl.conf

EMQX 默认 ACL 规则配置文件

plugins/*.conf

EMQX 各类插件配置文件

certs

EMQX SSL 证书文件

其他命令

# 卸载emqx
sudo apt-get remove emqx