Mosquitto 没有从 conf.d 加载配置文件

Vrr*_*rum 2 networking raspberry-pi mosquitto

我在树莓派3上安装了蚊子v2.0.11。我已经编写了配置文件,允许匿名连接,但 mosquitto 似乎没有加载此配置。

\n

/etc/mosquitto/conf.d/custom.conf:

\n
listener 1883\nallow_anonymous true\n
Run Code Online (Sandbox Code Playgroud)\n

当我在 bash 中运行“mosquitto”时,输出如下所示:

\n
1636892708: mosquitto version 2.0.11 starting\n1636892708: Using default config.\n1636892708: Starting in local only mode. Connections will only be possible from clients running on this machine.\n1636892708: Create a configuration file which defines a listener to allow remote access.\n1636892708: For more details see https://mosquitto.org/documentation/authentication-methods/\n1636892708: Opening ipv4 listen socket on port 1883.\n1636892708: Error: Address already in use\n1636892708: Opening ipv6 listen socket on port 1883.\n1636892708: Error: Address already in use\n
Run Code Online (Sandbox Code Playgroud)\n

“systemctl status mosquitto.service”表示 congfig 文件已加载。匿名连接仍然不起作用。

\n
mosquitto.service - Mosquitto MQTT Broker\n     Loaded: loaded (/lib/systemd/system/mosquitto.service; enabled; vendor preset: enabled)\n     Active: active (running) since Sun 2021-11-14 11:59:18 GMT; 27min ago\n       Docs: man:mosquitto.conf(5)\n             man:mosquitto(8)\n    Process: 471 ExecStartPre=/bin/mkdir -m 740 -p /var/log/mosquitto (code=exited, status=0/SUCCESS)\n    Process: 481 ExecStartPre=/bin/chown mosquitto /var/log/mosquitto (code=exited, status=0/SUCCESS)\n    Process: 482 ExecStartPre=/bin/mkdir -m 740 -p /run/mosquitto (code=exited, status=0/SUCCESS)\n    Process: 483 ExecStartPre=/bin/chown mosquitto /run/mosquitto (code=exited, status=0/SUCCESS)\n   Main PID: 484 (mosquitto)\n      Tasks: 1 (limit: 1597)\n        CPU: 793ms\n     CGroup: /system.slice/mosquitto.service\n             \xe2\x94\x94\xe2\x94\x80484 /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf\n\nNov 14 11:59:18 raspberrypi systemd[1]: Starting Mosquitto MQTT Broker...\nNov 14 11:59:18 raspberrypi mosquitto[484]: 1636891158: Loading config file /etc/mosquitto/conf.d/custom.conf\nNov 14 11:59:18 raspberrypi systemd[1]: Started Mosquitto MQTT Broker.\n
Run Code Online (Sandbox Code Playgroud)\n

当我通过“mosquitto -c /etc/mosquitto/conf.d/custom.conf”指定配置文件时,配置文件已正确加载。\n我真的不知道如何使其工作。

\n

har*_*llb 7

Mosquitto 不会自动加载配置文件,如果您想使用默认值以外的任何内容,则必须在命令行上使用标志传递一个配置文件。-c当作为服务运行时,服务定义包括-c指向默认配置文件。

默认配置文件通常存储在/etc/mosquitto/mosquitto.conf. 该文件包含以下行:

include_dir /etc/mosquitto/conf.d
Run Code Online (Sandbox Code Playgroud)

.conf这告诉 mosquitto 包含以该/etc/mosquitto/conf.d目录结尾的所有文件

当您尝试运行 mosquitto 而不向其传递配置文件时,它会失败,因为该服务已经在运行。如果您停止它 ( sudo service mosquitto stop) 然后运行mosquitto -c /etc/mosquitto/mosquitto.conf它,它会进一步运行,但也会失败,因为您的用户将无权访问默认持久性文件或日志文件。

最简单的解决方案就是重新启动服务

sudo service mosquitto restart
Run Code Online (Sandbox Code Playgroud)

它会接受您所做的更改/etc/mosquitto/conf.d/custom.conf

然后,您应该检查日志文件 ( /var/log/mosquitto/mosquitto.log) 以获取有关匿名客户端仍然无法连接的原因的指示。