首页 > 系统相关 >如何在 Ubuntu 上安装 Mosquitto MQTT 代理

如何在 Ubuntu 上安装 Mosquitto MQTT 代理

时间:2024-11-18 22:44:31浏览次数:3  
标签:temperature sudo MQTT Mosquitto mosquitto Ubuntu home sensor

如何在 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

创建雨云服务器

以下步骤仅供参考,请根据实际需求选择配置。

点击 云产品云服务器立即购买

/i/ll/?i=img_convert/6d1cfac48988a60f6430bf29b897ae00.png

选择距离你较近的区域,以保证低延迟。

/i/ll/?i=img_convert/4c16271f125adea69da6ed9e7b2a4226.png

按照自己需求选择配置。

/i/ll/?i=img_convert/fa69fed3142baf010a15ed36163d2215.png

选择 Ubuntu 22.04 版本。

/i/ll/?i=img_convert/f6611351f576daf28d27eee3938aa3f5.png

最后点击 立即购买,并按照提示进行购买。购买后等待机器部署完毕,点击购买的服务器,进入管理面板,找到远程连接相关信息。

/i/ll/?i=img_convert/5e84cffc9a748ee6080badd4f4a27091.png

/i/ll/?i=img_convert/414570cd3da48d4cc4bf51489992000b.png

使用 PowerShell 进行远程连接。

/i/ll/?i=img_convert/c8afbeb764459a37a8451dd2ed8eeff1.png

输入 ssh root@你的服务器IP 例如 ssh [email protected] 回车后,首次需要输入 yes,再次回车后即可登录服务器。

/i/ll/?i=img_convert/16bf1d681ae7fd3663ceb797b087d39e.png

到此为止,我们的云服务器就创建好了。

开始安装

Mosquitto 在 Ubuntu 22.04 的默认软件包仓库中可用。按照以下步骤在 Ubuntu 22.04 上安装 MQTT 代理。

  1. 安装 Mosquitto 软件包。

    sudo apt install -y mosquitto
    
  2. 验证新的 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 命令管理服务。

  1. 查看 mosquitto 服务状态并验证其是否处于活动状态。

    sudo systemctl status mosquitto
    

    输出:

    ● mosquitto.service - Mosquitto MQTT Broker
        Loaded: loaded (/usr/lib/systemd/system/mosquitto.service; enabled; preset: enabled)
        Active: active (running) since Fri 2024-10-25 06:51:37 UTC; 12min ago
          Docs: man:mosquitto.conf(5)
             man:mosquitto(8)
    ...
    
  2. 停止 mosquitto 服务。

    sudo systemctl stop mosquitto
    
  3. 启动 mosquitto 服务。

    sudo systemctl start mosquitto
    
  4. 重启 mosquitto 服务。

    sudo systemctl restart mosquitto
    

安装并测试 Mosquitto 客户端

发布者和订阅者可以使用 Mosquitto 命令行界面连接到 Mosquitto 服务器并交换消息。按照以下步骤安装软件包。

  1. 安装 mosquitto-clients 软件包。

    sudo apt install -y mosquitto-clients
    
  2. 订阅主题,例如 home/sensor/temperature,通过以下命令作为后台进程运行。

    mosquitto_sub -t "home/sensor/temperature" &
    

    输出:

    23.5
    
  3. home/sensor/temperature 主题发布新消息,并将值设置为 30.5

    mosquitto_pub -t "home/sensor/temperature" -m "30.5" -q 1 -r
    

    输出:

    30.5
    30.5
    
  4. 发布另一条消息,并将值设置为 45.2

    mosquitto_pub -t "home/sensor/temperature" -m "45.2" -q 1 -r
    

    输出:

    45.2
    45.2
    
  5. 查看所有活动的后台作业,并记录 mosquitto_sub 作业 ID。

    输出:

    [1]   Running                 mosquitto_sub -t "home/lights/sitting_room" &
    
  6. 通过指定 ID 停止作业。

    输出:

    [1]   Done                    mosquitto_sub -t "home/lights/sitting_room" &
    

保护 Mosquitto 服务器

默认情况下,Mosquitto 允许客户端无需任何形式的身份验证即可连接。按照以下步骤启用基于密码的身份验证,要求客户端使用用户名和密码连接。

  1. /etc/mosquitto/conf.d 目录中创建一个新的 default.conf 配置文件。

    sudo nano /etc/mosquitto/conf.d/default.conf
    
  2. /etc/mosquitto/conf.d/default.conf 文件中添加以下配置,以禁用匿名连接并允许 Mosquitto 读取 /etc/mosquitto/passwd 凭据文件。

    allow_anonymous false
    password_file /etc/mosquitto/passwd
    

    保存并关闭文件。

  3. 打开 /etc/mosquitto/passwd 认证文件。

    sudo nano /etc/mosquitto/passwd
    
  4. 在文件中添加以下用户凭据。将 EXAMPLE_PASSWORDSTRONG_PASSWORD 替换为您希望的值。

    john_doe:EXAMPLE_PASSWORD
    mary_smith:STRONG_PASSWORD
    

    保存并关闭文件。

  5. 使用 mosquitto_passwd 工具加密明文用户密码。

    sudo mosquitto_passwd -U /etc/mosquitto/passwd
    
  6. 查看 /etc/mosquitto/passwd 文件以验证您已加密密码。

    sudo cat /etc/mosquitto/passwd
    

    输出:

    john_doe:$6$TSzNycsj...5Qyvgd4g==
    mary_smith:$6$DtlKf1lG.../rLHIL0Q==
    
  7. 重启 mosquitto 服务以应用配置更改。

    sudo systemctl restart mosquitto
    
  8. 使用有效的用户名和密码订阅 /home/sensor/temperature 主题。例如,john_doeEXAMPLE_PASSWORD

    mosquitto_sub -u john_doe -P EXAMPLE_PASSWORD -t "/home/sensor/temperature"
    
  9. /home/sensor/temperature 主题发布新消息。

    mosquitto_pub -u john_doe -P EXAMPLE_PASSWORD -t "home/sensor/temperature" -m "22.5" -q 1 -r
    

    输出:

    22.5
    
  10. 查看所有活动的后台作业,并记录 mosquitto_sub 作业 ID。

    输出:

    [1]   Running                 mosquitto_sub -u john_doe -P EXAMPLE_PASSWORD -t "home/lights/sitting_room" &
    
  11. 通过指定作业 ID 停止主题。

    输出:

    [1]   Done                    mosquitto_sub -u john_doe -P EXAMPLE_PASSWORD -t "home/lights/sitting_room" &
    
  12. 使用错误的凭据尝试订阅 /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_?s=blog
面试鸭:https://mianshiya.com/?shareCode=sq29yv
我的博客:https://blog.ivwv.site

标签:temperature,sudo,MQTT,Mosquitto,mosquitto,Ubuntu,home,sensor
From: https://blog.csdn.net/weixin_53510183/article/details/143868851

相关文章

  • 深度学习模型部署RV1126(一)——Ubuntu配置rknn环境
    模型部署RV11126的流程大致为:训练得到.pth模型、pth2onnx、onnx2rknn,最后在边缘计算设备上完成部署,本文旨在完成RKNN的环境搭建工作,以便于后续的模型转换与部署。一、所需条件Ubuntu_16_04_64二、Ubuntu配置rknn环境(1)模型转换环境的配置下载rknn_toolkit:GitHub-rockc......
  • 读取和设置 Ubuntu 环境变量(很全面)
    读取和设置Ubuntu环境变量(很全面)环境变量在Ubuntu中,环境变量是一些动态命名值,用于影响程序的运行方式。它们包含了系统或用户的配置信息,帮助程序在运行时获取必要的环境信息。环境变量通常存储在内存中,程序可以通过这些变量访问到相关的数据。常用的环境变量......
  • Ubuntu建立samba共享目录
    在Ubuntu系统中,Samba是一个开源的软件套件,它允许你在Linux和Unix系统上共享文件和打印机。通过设置Samba,你可以轻松地在网络上的其他计算机上访问Ubuntu系统的文件和资源。本文将指导你如何配置Samba,使每个用户都可以使用自己的用户名和密码登录自己的home目录,从而实现用户级别的......
  • 【一篇搞定配置】如何在Ubuntu上安装Hadoop(单机、伪分布配置)
    ......
  • Ubuntu 启用 root 账户
    在Ubuntu中,默认情况下root账户是被禁用的。为了启用root账户,你需要设置root用户的密码。以下是如何在Ubuntu上启用root账户的步骤:打开终端。输入以下命令来设置root用户的密码:sudopasswdroot你会被提示输入你的当前用户的密码,然后输入你想要为root账户设置......
  • Ubuntu24.04 安装 VirtualBox
    Ubuntu24.04安装VirtualBox下载DownloadVirtualBoxforLinuxHostshttps://www.virtualbox.org/wiki/Linux_Downloadswgethttps://download.virtualbox.org/virtualbox/7.1.4/virtualbox-7.1_7.1.4-165100~Ubuntu~noble_amd64.deb安装sudodpkg-ivirtualbox-7.1_7.1......
  • Ubuntu24.04 搭建 Flutter 开发环境
    Ubuntu24.04搭建Flutter开发环境安装FlutterFlutter中文社区下载https://docs.flutter.cn/get-started/install/linux/android创建目录DevTools,用来存放开发软件mkdir~/DevTools下载Flutterwgethttps://storage.flutter-io.cn/flutter_infra_release/releases/s......
  • Ubuntu24.04 使用 Flatpak
    Ubuntu24.04使用FlatpakFlatpak是Linux发行版的通用软件包系统,允许安全、可移植、无依赖的软件安装。它使开发人员能够分发独立于系统的应用程序,确保在不同Linux发行版上的一致功能。用户可以使用GNOMESoftware中心或命令行管理Flatpak应用程序。安装flatpaksud......
  • 吐槽ubuntu上pdf阅读器
    !https://zhuanlan.zhihu.com/p/6483861108细数(吐槽)ubuntu(linux)上pdf阅读器不好用的地方作为一枚研究僧,有使用ubuntu(linux)的需求,同时也有在ubuntu上看学术文献的需求(毕竟有时候懒得切换回windows)。对于pdf学术文献阅读,最需要功能是高亮、点击跳转、(跳转后)返回、批注......
  • Ubuntu20.04安装Mysql
    Ubuntu20.04安装Mysql 1、方法一:下载安装MySQL(安装其他版本) 1.1在官网下载mysql安装包 1.2解压文件 1.3安装 2、方法二:通过apt安装MySQL服务(推荐,会安装最新版) 2.1初始化配置 2.2检查mysql服务状态 3.1配置远程访问 3.2新建数据库和用户 3.3mysql服务命令......