4、Mosquitto安装与配置:在Linux/Windows上安装Mosquitto,基础配置文件解析
好,咱们进入实操环节。
前面聊了那么多MQTT的理论,说白了,现在得有个能跑起来的Broker。Mosquitto就是那个最常用的选择。轻量、开源、跨平台,几乎成了MQTT的代名词。
我个人习惯,不管学什么中间件,先把它装起来跑通再说。别光看书,动手才是硬道理。
4.1 在Linux上安装Mosquitto
Linux环境,我推荐用Ubuntu或Debian系。CentOS也行,但包名可能有点区别。
安装其实就一行命令。但注意,我建议先更新一下包索引,免得装到旧版本。
sudo apt update
sudo apt install mosquitto mosquitto-clients -y
这里我装了俩东西:mosquitto是服务端,mosquitto-clients是客户端工具。客户端工具特别有用,后面测试发布订阅全靠它。
装完之后,检查一下服务状态:
sudo systemctl status mosquitto
如果看到绿色的 active (running),恭喜你,Broker已经跑起来了。
4.2 在Windows上安装Mosquitto
Windows用户也别急。Mosquitto官方提供了Windows安装包。
去官网下载 mosquitto-x.x.x-install-windows-x64.exe,双击安装就行。
安装过程中,记得勾选“Service”选项。这样Mosquitto会作为Windows服务运行,开机自启,省心。
安装完成后,打开命令提示符(管理员),输入:
net start mosquitto
服务启动后,默认监听1883端口。你可以用 netstat -an | findstr 1883 确认一下。
C:\Program Files\mosquitto\mosquitto.conf。但注意,这个文件默认是只读的。我第一次装的时候,改了半天配置发现保存不了,后来才发现权限问题。你得用管理员权限打开编辑器才能修改。
4.3 基础配置文件解析
Mosquitto的配置文件,说白了就是一个文本文件。但里面的门道不少。
默认配置文件路径:
- Linux:
/etc/mosquitto/mosquitto.conf - Windows:
C:\Program Files\mosquitto\mosquitto.conf
咱们挑几个最常用的配置项说说。你想想看,一个Broker最需要关心什么?无非就是监听端口、允许谁连、日志怎么记。
4.3.1 监听端口配置
# 默认监听1883端口(非加密)
listener 1883
# 如果要用WebSocket,加一行
listener 9001
protocol websockets
嗯,这里要注意。WebSocket端口不是必须的。只有当你需要浏览器直接连MQTT时,才需要开这个。我做过一个智慧农业的项目,前端大屏就是通过WebSocket连的Mosquitto,效果不错。
4.3.2 允许匿名连接
# 允许匿名连接(生产环境不建议)
allow_anonymous true
这个配置,说白了就是让客户端不用用户名密码就能连。开发测试时很方便,但生产环境千万别这么干。我曾经见过一个客户,把匿名连接开着部署到公网,结果被人家疯狂发垃圾消息,整个系统都瘫痪了。
4.3.3 密码文件配置
生产环境,我建议用密码认证。先创建一个密码文件:
# Linux
sudo mosquitto_passwd -c /etc/mosquitto/passwd myuser
# Windows
mosquitto_passwd -c C:\mosquitto\passwd myuser
然后修改配置文件:
allow_anonymous false
password_file /etc/mosquitto/passwd
这样,只有密码文件里的用户才能连接。安全多了。
4.3.4 日志配置
日志这东西,平时觉得没用,出问题时就靠它救命了。
# 日志类型
log_dest file /var/log/mosquitto/mosquitto.log
log_dest stdout
# 日志级别
log_type all
我个人习惯,开发阶段把日志级别调到 all,能看到所有连接、订阅、发布的细节。生产环境可以调低一点,比如只记录 warning 和 error,不然日志文件涨得太快。
4.3.5 持久化配置
Mosquitto默认把消息存在内存里。如果Broker重启,所有消息就丢了。如果你需要保证消息不丢,得开启持久化:
persistence true
persistence_location /var/lib/mosquitto/
开启后,Mosquitto会把消息写入磁盘文件。重启后还能恢复。但注意,性能会稍微下降一点。鱼和熊掌不可兼得嘛。
4.4 一个完整的配置文件示例
说了这么多,给一个我常用的配置模板吧。你直接复制过去,改改路径就能用。
# 监听端口
listener 1883
# 允许匿名(开发环境)
allow_anonymous true
# 日志
log_dest file /var/log/mosquitto/mosquitto.log
log_type all
# 持久化
persistence true
persistence_location /var/lib/mosquitto/
# 最大连接数
max_connections 1000
# 心跳检测
set_tcp_nodelay true
4.5 验证安装是否成功
装好配好之后,怎么知道它能不能用?很简单,用客户端工具测一下。
打开两个终端:
终端1(订阅者):
mosquitto_sub -h localhost -t "test/topic" -v
终端2(发布者):
mosquitto_pub -h localhost -t "test/topic" -m "Hello, MQTT!"
如果终端1收到了 Hello, MQTT!,说明你的Mosquitto已经跑通了。
我第一次看到这个消息时,说实话,挺有成就感的。一个消息从发布者到Broker,再到订阅者,就这么简单。但背后涉及的协议、连接管理、QoS保障,才是咱们后面要深挖的内容。
好,这一章就到这儿。下一章咱们聊聊MQTT的发布订阅模型,以及Topic通配符怎么用。那个东西,用好了能省不少事。