Vrr*_*rum 2 networking raspberry-pi mosquitto
我在树莓派3上安装了蚊子v2.0.11。我已经编写了配置文件,允许匿名连接,但 mosquitto 似乎没有加载此配置。
\n/etc/mosquitto/conf.d/custom.conf:
\nlistener 1883\nallow_anonymous true\nRun Code Online (Sandbox Code Playgroud)\n当我在 bash 中运行“mosquitto”时,输出如下所示:
\n1636892708: 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\nRun Code Online (Sandbox Code Playgroud)\n“systemctl status mosquitto.service”表示 congfig 文件已加载。匿名连接仍然不起作用。
\nmosquitto.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.\nRun Code Online (Sandbox Code Playgroud)\n当我通过“mosquitto -c /etc/mosquitto/conf.d/custom.conf”指定配置文件时,配置文件已正确加载。\n我真的不知道如何使其工作。
\nMosquitto 不会自动加载配置文件,如果您想使用默认值以外的任何内容,则必须在命令行上使用标志传递一个配置文件。-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) 以获取有关匿名客户端仍然无法连接的原因的指示。