如何在 Ubuntu 上安装 Mosquitto MQTT Broker / Server

MQTT 是基于发布/订阅模型 & TCP / IP 的“轻量级”消息协议,主要用于物联网设备(例如 ESP8266,Raspberry Pi 等)之间的通信。它在资源不足和电池供电的自动化应用(例如智能家居)中非常受欢迎,安全警报系统和电池供电的传感器网络。

Mosquitto 是实现 MQTT 协议的开源消息代理(或服务器)。凭借其良好的社区支持,文档和易于安装,它已成为最受欢迎的 MQTT Broker 之一。

1 预先准备

  • 具有 root 访问权限的 Ubuntu 16.04 服务器
  • 在防火墙上打开端口 TCP : 1883

2 具体步骤

2.1 安装 Mosquitto Broker

首先需要更新 Ubuntu 的软件包列表,并安装可用的最新 Mosquitto Broker,以下是对应的终端指令。

sudo apt-get update
sudo apt-get install mosquitto

Mosquitto 服务将在安装后启动。

2.2 安装 MQTT 客户端并测试

通过以下终端指令安装 MQTT 客户端。

sudo apt-get install mosquitto-clients

Mosquitto 客户端可通过命令行轻松测试 MQTT。我们将使用两个命令窗口,一个用于订阅名为的主题 “test”,另一个用于向其发布消息。

Topic 是代理用于过滤每个已连接客户端的消息的标签。例如客户端订阅Topic “test” 将仅侦听其他客户端发布到同一 Topic “test” 的消息。

以下是订阅主题 “test” 的终端指令。

mosquitto_sub -t "test"

Mosquito_sub 是我们在上一个命令中安装的订阅客户端。在这里,我们指定“ -t”,后跟主题名称。

然后可以将消息发布到主题 “test”,打开第二个终端,并向该 “test” 主题发布消息。如下。

mosquitto_pub -m "message from mosquitto_pub client" -t "test"

在这里,附加参数 –m 后跟我们要发布的消息。点击 Enter,您应该在 mosquitto_pub client ,mosquito_sub client以及正在运行的终端上看到消息message from mosquitto_pub client`。

2.3 使用密码保护(可选)

Mosquitto 带有一个名为的密码文件生成实用程序 mosquitto_passwd。以下是对应的终端指令。

sudo mosquitto_passwd -c /etc/mosquitto/passwd zztest
Password: password

然后为 Mosquitto 创建一个配置文件,指向您刚刚创建的密码文件。

sudo nano /etc/mosquitto/conf.d/default.conf

这将打开一个空文件。将以下内容粘贴到其中。

allow_anonymous false
password_file /etc/mosquitto/passwd

之后使用 Ctrl+OEnterCtrl+X 保存并退出文本编辑器。

现在,重新启动 Mosquitto 服务器并测试您刚刚的更改。

sudo systemctl restart mosquitto

在订阅客户端窗口中,按 Ctrl+C 以退出订阅客户端并使用以下命令重新启动它。

mosquitto_sub -t "test" -u "zztest" -P "password"

注意: 上述指令输入密码为大写字母 -P。

您可以在“发布客户端”终端中,尝试发布不带密码的消息。

mosquitto_pub -t "test" -m "message from mosquitto_pub client"

该消息将被拒绝,并显示以下错误消息。

Connection Refused: not authorised.
Error: The connection was refused.

然后尝试使用 username 和 password发布消息。

mosquitto_pub -t "test" -m "message from mosquitto_pub client" -u "zztest" -P "password"

点击 Enter,您将在订阅客户端终端中看到该消息,如第二步所示。

3 尾声

现在您已经设置了受密码保护的 MQTT 服务器。您可以将 Ubuntu 服务器的公共 IP 用作项目的 MQTT 代理。

猜你喜欢

转载自blog.csdn.net/zztiger123/article/details/108661721