广州新冠新增最新消息,百度权重优化软件,安徽住建和城乡建设厅官网,深圳建筑人才网招聘信息如何在 Ubuntu 上安装 Mosquitto MQTT 代理
Mosquitto 是一个开源的消息代理#xff0c;实现了消息队列遥测传输 (MQTT) 协议。在 Ubuntu 22.04 上安装 MQTT 代理#xff0c;您可以利用 MQTT 轻量级的 TCP/IP 消息平台#xff0c;该平台专为资源有限的物联网 (IoT) 设备设计…如何在 Ubuntu 上安装 Mosquitto MQTT 代理
Mosquitto 是一个开源的消息代理实现了消息队列遥测传输 (MQTT) 协议。在 Ubuntu 22.04 上安装 MQTT 代理您可以利用 MQTT 轻量级的 TCP/IP 消息平台该平台专为资源有限的物联网 (IoT) 设备设计例如带宽低或电池寿命短的设备。Mosquitto 依赖于发布-订阅 (pub/sub) 拓扑结构发布者将消息发送到代理订阅者通过频道接收消息。
简介
Mosquitto 是一个轻量级、开源的消息代理实现了 MQTT消息队列遥测传输和 MQTTv5 协议。它被广泛应用于物联网 (IoT)、传感器网络、移动应用、嵌入式系统等需要轻量级实时数据交换的场景。
主要特点:
轻量高效: Mosquitto 占用资源少非常适合在资源受限的设备上运行。开源免费: 基于 Eclipse Public License v2.0 许可证发布可以免费使用和修改。支持 MQTT 和 MQTTv5: 兼容 MQTT 协议的多个版本提供更丰富的功能和更好的性能。易于安装和配置: 提供简单的安装包和配置文件方便快速部署。支持多种客户端: 提供 C、Python、Java 等多种语言的客户端库方便与各种应用集成。灵活的主题订阅: 支持通配符和主题层次结构方便灵活地订阅和发布消息。多种身份验证机制: 支持用户名/密码、TLS/SSL 加密等多种身份验证方式保障数据安全。消息持久化: 可以将消息持久化到磁盘防止消息丢失。桥接功能: 可以桥接多个 Mosquitto 代理实现分布式消息传递。
准备工作
服务器准备
必要前提
一个充满求知欲的大脑。一台 Linux 服务器推荐腾讯云、阿里云或雨云等。本文将以雨云为例进行演示。
我将以 雨云 为例带大家创建一台自己的云服务器以便尝试本篇文章的内容。
注册链接 https://rainyun.ivwv.site
创建雨云服务器 以下步骤仅供参考请根据实际需求选择配置。 点击 云产品 → 云服务器 → 立即购买。 选择距离你较近的区域以保证低延迟。 按照自己需求选择配置。 选择 Ubuntu 22.04 版本。 最后点击 立即购买并按照提示进行购买。购买后等待机器部署完毕点击购买的服务器进入管理面板找到远程连接相关信息。 使用 PowerShell 进行远程连接。 输入 ssh root你的服务器IP 例如 ssh root154.9.227.239 回车后首次需要输入 yes再次回车后即可登录服务器。 到此为止我们的云服务器就创建好了。
开始安装
Mosquitto 在 Ubuntu 22.04 的默认软件包仓库中可用。按照以下步骤在 Ubuntu 22.04 上安装 MQTT 代理。 安装 Mosquitto 软件包。 sudo apt install -y mosquitto验证新的 Mosquitto 版本。 输出 1730087147: mosquitto version 2.0.18 starting
1730087147: Using default config.
1730087147: Starting in local only mode. Connections will only be possible from clients running on this machine.
1730087147: Create a configuration file which defines a listener to allow remote access.管理 Mosquitto 系统服务
Mosquitto 在 mosquitto 下作为系统服务运行。按照以下步骤使用 systemctl 命令管理服务。 查看 mosquitto 服务状态并验证其是否处于活动状态。 sudo systemctl status mosquitto输出 ● mosquitto.service - Mosquitto MQTT BrokerLoaded: loaded (/usr/lib/systemd/system/mosquitto.service; enabled; preset: enabled)Active: active (running) since Fri 2024-10-25 06:51:37 UTC; 12min agoDocs: man:mosquitto.conf(5)man:mosquitto(8)
...停止 mosquitto 服务。 sudo systemctl stop mosquitto启动 mosquitto 服务。 sudo systemctl start mosquitto重启 mosquitto 服务。 sudo systemctl restart mosquitto安装并测试 Mosquitto 客户端
发布者和订阅者可以使用 Mosquitto 命令行界面连接到 Mosquitto 服务器并交换消息。按照以下步骤安装软件包。 安装 mosquitto-clients 软件包。 sudo apt install -y mosquitto-clients订阅主题例如 home/sensor/temperature通过以下命令作为后台进程运行。 mosquitto_sub -t home/sensor/temperature 输出 23.5向 home/sensor/temperature 主题发布新消息并将值设置为 30.5。 mosquitto_pub -t home/sensor/temperature -m 30.5 -q 1 -r输出 30.5
30.5发布另一条消息并将值设置为 45.2。 mosquitto_pub -t home/sensor/temperature -m 45.2 -q 1 -r输出 45.2
45.2查看所有活动的后台作业并记录 mosquitto_sub 作业 ID。 输出 [1] Running mosquitto_sub -t home/lights/sitting_room 通过指定 ID 停止作业。 输出 [1] Done mosquitto_sub -t home/lights/sitting_room 保护 Mosquitto 服务器
默认情况下Mosquitto 允许客户端无需任何形式的身份验证即可连接。按照以下步骤启用基于密码的身份验证要求客户端使用用户名和密码连接。 在 /etc/mosquitto/conf.d 目录中创建一个新的 default.conf 配置文件。 sudo nano /etc/mosquitto/conf.d/default.conf在 /etc/mosquitto/conf.d/default.conf 文件中添加以下配置以禁用匿名连接并允许 Mosquitto 读取 /etc/mosquitto/passwd 凭据文件。 allow_anonymous false
password_file /etc/mosquitto/passwd保存并关闭文件。 打开 /etc/mosquitto/passwd 认证文件。 sudo nano /etc/mosquitto/passwd在文件中添加以下用户凭据。将 EXAMPLE_PASSWORD 和 STRONG_PASSWORD 替换为您希望的值。 john_doe:EXAMPLE_PASSWORD
mary_smith:STRONG_PASSWORD保存并关闭文件。 使用 mosquitto_passwd 工具加密明文用户密码。 sudo mosquitto_passwd -U /etc/mosquitto/passwd查看 /etc/mosquitto/passwd 文件以验证您已加密密码。 sudo cat /etc/mosquitto/passwd输出 john_doe:$6$TSzNycsj...5Qyvgd4g
mary_smith:$6$DtlKf1lG.../rLHIL0Q重启 mosquitto 服务以应用配置更改。 sudo systemctl restart mosquitto使用有效的用户名和密码订阅 /home/sensor/temperature 主题。例如john_doe 和 EXAMPLE_PASSWORD。 mosquitto_sub -u john_doe -P EXAMPLE_PASSWORD -t /home/sensor/temperature向 /home/sensor/temperature 主题发布新消息。 mosquitto_pub -u john_doe -P EXAMPLE_PASSWORD -t home/sensor/temperature -m 22.5 -q 1 -r输出 22.5查看所有活动的后台作业并记录 mosquitto_sub 作业 ID。 输出 [1] Running mosquitto_sub -u john_doe -P EXAMPLE_PASSWORD -t home/lights/sitting_room 通过指定作业 ID 停止主题。 输出 [1] Done mosquitto_sub -u john_doe -P EXAMPLE_PASSWORD -t home/lights/sitting_room 使用错误的凭据尝试订阅 /home/sensor/temperature 主题 mosquitto_pub -u john_doe -P VERY_WRONG_PASSWORD -t home/sensor/temperature -m 22.5 -q 1 -r输出 Connection error: Connection Refused: not authorised.
Error: The connection was refused.上述输出显示连接失败因为 Mosquitto 无法授权用户。 相关链接 雨云 - 新一代云服务提供商: https://www.rainyun.com/NTEzMTM1_?sblog 面试鸭https://mianshiya.com/?shareCodesq29yv 我的博客https://blog.ivwv.site