云计算百科
云计算领域专业知识百科平台

Ubuntu 上搭建一个 MQTT 服务器

在这里插入图片描述

在 Ubuntu 上搭建一个 MQTT 服务器,通常使用 Mosquitto 作为 MQTT 代理(Broker)。Mosquitto 是一个开源的 MQTT 代理,非常适合于轻量级的 IoT 应用。以下是完整的步骤来安装 Mosquitto 并进行测试。

一、 安装 Mosquitto MQTT 服务器

更新系统包列表

首先,确保你的系统软件包是最新的。打开终端并运行以下命令:

sudo apt update

安装 Mosquitto 服务器

安装 Mosquitto 以及客户端工具(mosquitto-clients):

sudo apt install mosquitto mosquittoclients

mosquitto: 是 MQTT 代理服务器。 mosquitto-clients: 包含 MQTT 客户端工具,用于测试和调试。 启动 Mosquitto 服务

安装完成后,Mosquitto 会自动作为系统服务启动。你可以检查它的状态:

sudo systemctl status mosquitto

如果没有启动,使用以下命令启动:

sudo systemctl start mosquitto

如果你希望 Mosquitto 在系统启动时自动启动,可以使用:

sudo systemctl enable mosquitto

二、 配置 Mosquitto 服务器并启用用户名和密码

创建密码文件

Mosquitto 使用密码文件来验证客户端连接。使用 mosquitto_passwd 命令创建密码文件并添加用户。

例如,创建一个名为 mosquitto_passwd 的密码文件,并为用户 testuser 设置密码:

sudo mosquitto_passwd c /etc/mosquitto/passwd testuser

在执行此命令时,它会提示你输入并确认 testuser 用户的密码。

修改 Mosquitto 配置文件

接下来,编辑 Mosquitto 的配置文件,启用身份验证。

编辑 /etc/mosquitto/mosquitto.conf 文件:

sudo nano /etc/mosquitto/mosquitto.conf

然后在文件中加入以下内容:

# 启用密码验证
allow_anonymous false
password_file /etc/mosquitto/passwd

allow_anonymous false:禁用匿名访问。 password_file /etc/mosquitto/passwd:指定密码文件的位置。 保存并关闭文件。

重启 Mosquitto 服务

修改配置文件后,重启 Mosquitto 服务以使配置生效:

sudo systemctl restart mosquitto

三、测试 MQTT 服务器

订阅一个主题(测试订阅)

打开一个终端窗口,使用 mosquitto_sub 工具订阅一个主题(如 test/topic):

mosquitto_sub h localhost t "test/topic" u "testuser" P "yourpassword"

-u “testuser”:指定用户名。 -P “yourpassword”:指定用户名对应的密码。 如果一切正常,你的终端会处于订阅状态,等待来自 test/topic 的消息。

发布消息(测试发布)

打开另一个终端窗口,使用 mosquitto_pub 工具向 test/topic 主题发布一条消息:

mosquitto_pub h localhost t "test/topic" m "Hello, MQTT!" u "testuser" P "yourpassword"

如果订阅终端正在监听,你会看到 “Hello, MQTT!” 消息出现在订阅终端。

四、 测试 MQTT 连接

你可以使用 MQTT 客户端工具(如 MQTT.fx 或 MQTT Explorer)连接到你的 Mosquitto 服务器进行测试。

下载并安装 MQTT.fx(如果你在桌面环境中工作)

访问 MQTT.fx 官网 下载适用于你操作系统的版本。

配置 MQTT.fx

启动 MQTT.fx。 在 “Broker Address” 中输入 localhost 或 127.0.0.1(如果你在同一台机器上运行 MQTT 服务器)。 默认端口是 1883,你可以根据需要更改端口。 测试发布和订阅

在 “Subscribe” 标签页中,输入你想订阅的主题(如 test/topic),然后点击 “Subscribe”。 在 “Publish” 标签页中,选择主题(如 test/topic)并发布消息。

五、 配置防火墙(如果有)

如果你的服务器启用了防火墙(如 ufw),你需要确保允许 MQTT 的默认端口(1883)通过防火墙。

允许端口 1883 通过防火墙:

bash sudo ufw allow 1883/tcp 检查防火墙状态:

bash sudo ufw status

六、 远程访问 Mosquitto(可选)

如果你希望从远程设备访问你的 MQTT 服务器,可以进行以下操作:

配置 Mosquitto 监听公网 IP

编辑 /etc/mosquitto/mosquitto.conf 文件,确保 bind_address 设置为服务器的公网 IP,或者注释掉该行以便监听所有接口。

# bind_address 127.0.0.1

重启 Mosquitto 服务:

sudo systemctl restart mosquitto

配置防火墙 如果你想允许从远程设备访问 MQTT 服务器,确保防火墙允许 1883 端口的流量:

sudo ufw allow 1883

总结

通过以上步骤,你可以在 Ubuntu 系统上成功搭建一个 Mosquitto MQTT 服务器,并使用内置的客户端工具进行测试。对于实际生产环境,可以根据需要进一步配置 SSL/TLS 加密、身份验证等安全设置。如果你希望将该 MQTT 服务器与其他设备或应用集成,可以进一步开发基于 MQTT 协议的客户端应用。

赞(0)
未经允许不得转载:网硕互联帮助中心 » Ubuntu 上搭建一个 MQTT 服务器
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!