在 Ubuntu 上搭建一个 MQTT 服务器,通常使用 Mosquitto 作为 MQTT 代理(Broker)。Mosquitto 是一个开源的 MQTT 代理,非常适合于轻量级的 IoT 应用。以下是完整的步骤来安装 Mosquitto 并进行测试。
一、 安装 Mosquitto MQTT 服务器
更新系统包列表
首先,确保你的系统软件包是最新的。打开终端并运行以下命令:
sudo apt update
安装 Mosquitto 服务器
安装 Mosquitto 以及客户端工具(mosquitto-clients):
sudo apt install mosquitto mosquitto–clients
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 协议的客户端应用。
评论前必须登录!
注册