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已经跑起来了。

小提示: 我在项目中遇到过,有些云服务器默认防火墙会拦截1883端口。装好后记得检查一下防火墙规则,不然客户端死活连不上,你还会以为是Mosquitto没装好。

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 确认一下。

注意: Windows版的配置文件默认在 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,能看到所有连接、订阅、发布的细节。生产环境可以调低一点,比如只记录 warningerror,不然日志文件涨得太快。

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
核心要点: 配置文件的每一行,其实都对应着Mosquitto的一个行为。别怕改错,改错了大不了重启服务。我刚开始学的时候,配置文件被我改崩了十几次,但每次报错都让我多学一个知识点。

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通配符怎么用。那个东西,用好了能省不少事。