当前位置: 首页 > article >正文

在Ubuntu上部署MQTT服务器的详细指南

目录

1. 环境准备

2. 安装Mosquitto和客户端工具

3. 启动和启用Mosquitto服务

4. 验证MQTT服务器的安装

5. Mosquitto服务器的配置

5.1 启用用户密码认证

5.2 启用TLS加密

6. 配置防火墙

7. 测试和验证

7.1 通过加密的MQTT通道发布消息

7.2 查看日志

8. 结语


前言

        随着物联网(IoT)技术的快速发展,轻量级的消息传输协议(MQTT)逐渐成为设备通信的首选。MQTT通过发布/订阅(Publish/Subscribe)模式实现消息的高效传递,非常适合低带宽和高延迟的网络环境。在本文中,我们将介绍如何在Ubuntu操作系统上部署一个基于Mosquitto的MQTT服务器,并进行基本的配置和安全设置。

1. 环境准备

在开始安装之前,建议更新系统以确保所有软件包为最新版本。可以通过以下命令完成系统更新:

sudo apt update
sudo apt upgrade -y

2. 安装Mosquitto和客户端工具

Mosquitto是一个开源的MQTT代理,支持版本3.1及3.1.1协议。它既可以用作服务器,也可以用作客户端。通过以下命令可以安装Mosquitto及其客户端工具:

sudo apt install mosquitto mosquitto-clients -y
  • Mosquitto:MQTT代理,负责消息的接收和传递。
  • Mosquitto-clients:提供mosquitto_pubmosquitto_sub两个客户端工具,用于发布和订阅MQTT消息。

3. 启动和启用Mosquitto服务

安装完成后,Mosquitto服务默认是关闭的。我们可以通过以下命令启动并设置其开机自启动:

sudo systemctl enable mosquitto
sudo systemctl start mosquitto

通过以下命令检查Mosquitto服务状态:

sudo systemctl status mosquitto

4. 验证MQTT服务器的安装

现在,我们可以通过发布和订阅消息来验证Mosquitto服务器是否正常运行。打开两个终端窗口:

  • 在第一个窗口订阅一个主题(例如 test/topic):

mosquitto_sub -t test/topic
  • 在第二个窗口向该主题发布一条消息:
mosquitto_pub -t test/topic -m "Hello MQTT"

如果安装成功,第一个窗口会显示刚发布的“Hello MQTT”消息。

5. Mosquitto服务器的配置

Mosquitto的默认配置文件位于 /etc/mosquitto/mosquitto.conf。该文件允许我们根据实际需求自定义服务器的行为,如设置安全认证、启用TLS加密等。

5.1 启用用户密码认证

为确保MQTT通信的安全性,可以启用用户认证,禁止匿名访问:

  1. 创建密码文件并为用户设置密码:
sudo mosquitto_passwd -c /etc/mosquitto/passwd your_username

     2.修改 /etc/mosquitto/mosquitto.conf 文件,添加以下内容来启用密码认证:

allow_anonymous false
password_file /etc/mosquitto/passwd

     3.重启Mosquitto服务以使更改生效:

sudo systemctl restart mosquitto

5.2 启用TLS加密

为了保证传输中的数据安全,建议启用TLS加密。以下是配置TLS的方法:

  1. 生成自签名证书:

sudo openssl req -x509 -newkey rsa:2048 -keyout /etc/mosquitto/certs/mosquitto.key -out /etc/mosquitto/certs/mosquitto.crt -days 365 -nodes

     2.修改 /etc/mosquitto/mosquitto.conf 文件,启用TLS监听端口并添加证书路径:

listener 8883
cafile /etc/mosquitto/certs/ca.crt
certfile /etc/mosquitto/certs/mosquitto.crt
keyfile /etc/mosquitto/certs/mosquitto.key

    3.重新启动Mosquitto服务:

sudo systemctl restart mosquitto

6. 配置防火墙

如果你启用了防火墙(如ufw),需要为MQTT的端口开放访问权限。以下命令将允许1883端口(用于未加密的MQTT通信)和8883端口(用于加密的MQTT通信)的访问:

sudo ufw allow 1883/tcp
sudo ufw allow 8883/tcp

7. 测试和验证

7.1 通过加密的MQTT通道发布消息

在启用了TLS的情况下,可以使用以下命令通过加密通道发布和订阅消息:

  • 订阅加密的主题:

mosquitto_sub --cafile /etc/mosquitto/certs/mosquitto.crt -h localhost -p 8883 -t test/topic -u "your_username" -P "your_password"
  • 发布加密的消息:
mosquitto_pub --cafile /etc/mosquitto/certs/mosquitto.crt -h localhost -p 8883 -t test/topic -m "Hello Secure MQTT" -u "your_username" -P "your_password"

7.2 查看日志

Mosquitto的日志文件记录了服务器运行时的所有信息。如果出现问题,可以通过以下命令查看日志:

sudo journalctl -u mosquitto

8. 结语

        通过本文,你已经学会了如何在Ubuntu上部署和配置Mosquitto MQTT服务器。Mosquitto提供了强大的MQTT代理服务,并支持多种安全特性如密码认证和TLS加密。可以根据实际需要进一步优化和配置服务器,以确保其高效、安全地运行在生产环境中。


http://www.kler.cn/news/362747.html

相关文章:

  • 求助帖:ubuntu22.10 auto install user-data配置了为何还需要选择语言键盘(如何全自动)
  • 如何保护服务器的系统日志
  • 【微软商店平台】如何将exe打包上传微软商店
  • 【MySQL】详解MySQL数据类型
  • 从0到1学习node.js(path模块以及HTTP协议)
  • WPF中Grid、StackPanel、Canvas、WrapPanel的区别
  • JavaScript完整笔记
  • 列表、元组、集合、字典和 pandas 数据框(DataFrame)之间的数据转换
  • 【Qt】QTableView添加下拉框过滤条件
  • 华为无线路由器设置成交换机
  • SpringBoot项目ES6.8升级ES7.4.0
  • STM32G474使用TIM2触发DAC输出输出正弦波
  • uniapp使用webView打开的网页有缓存如何解决(APP,微信小程序)
  • HarmonyOS鸿蒙分布式文件操作的时候权限问题
  • Rust中的Sync特征:确保多线程间安全共享数据
  • 软件工程--需求分析与用例模型
  • Python包——Matplotlib
  • C++STL之list
  • 探索卷积层参数量与计算量
  • MySQL--基本介绍
  • HBuilder X 中Vue.js基础使用2(三)
  • 基于 Konva 实现Web PPT 编辑器(三)
  • qt生成uuid,转成int。ai回答亲测可以
  • 线性可分支持向量机的原理推导 9-32线性分类超平面的位置 公式解析
  • Dubbo接口解析
  • WordPress多站点子目录模式更换域名的教程方法