Mosquitto 仅在本地模式下打开 Ubuntu

Mosquitto only opens in local mode Ubuntu

我正在尝试使用 esp32 发布到我 Ubuntu 笔记本电脑上的 mosquitto MQTT 服务器。我连续 运行 进入错误(不是真正的错误,更多的是安全功能):

1645391623: mosquitto version 2.0.14 starting
1645391623: Using default config.
1645391623: Starting in local only mode. Connections will only be possible from clients running on this machine.
1645391623: Create a configuration file which defines a listener to allow remote access.
1645391623: For more details see https://mosquitto.org/documentation/authentication-methods/
1645391623: Opening ipv4 listen socket on port 1883.
1645391623: Opening ipv6 listen socket on port 1883.
1645391623: mosquitto version 2.0.14 running
1645391674: mosquitto version 2.0.14 terminating

我已经在堆栈交换和一般互联网上对此进行了大量研究。看来我需要在 mosquitto.conf 文件中添加这样的内容:

listener 1883
allow_anonymous true

listener 1883 0.0.0.0
allow_anonymous true

我希望可以从本地网络上的外部设备访问代理。这是原始 mosquitto.conf 文件的样子:

# Place your local configuration in /etc/mosquitto/conf.d/
#
# A full description of the configuration file is at
# /usr/share/doc/mosquitto/examples/mosquitto.conf.example

persistence true
persistence_location /var/lib/mosquitto/

log_dest file /var/log/mosquitto/mosquitto.log

include_dir /etc/mosquitto/conf.d

这是我修改后的文件的样子:

# Place your local configuration in /etc/mosquitto/conf.d/
#
# A full description of the configuration file is at
# /usr/share/doc/mosquitto/examples/mosquitto.conf.example

persistence true
persistence_location /var/lib/mosquitto/

log_dest file /var/log/mosquitto/mosquitto.log

include_dir /etc/mosquitto/conf.d

listener 1883
allow_anonymous true

无论我使用哪个文件,我都会收到相同的消息。

我在 Ubuntu 20.04.3 LTS。

我很乐意提供您可能需要的任何其他信息。

如果您能提供任何帮助或建议,我们将不胜感激!

编辑: 使用以下命令后:mosquitto -c /etc/mosquitto/mosquitto.conf

我收到以下输出:

mosquitto -c /etc/mosquitto/mosquitto.conf 
1645395680: Loading config file /etc/mosquitto/conf.d/mosquito.conf 
1645395680: Error: Unable to open log file /var/log/mosquitto/mosquitto.log for writing. 
1645395680: Error: Address already in use

或者如果我将命令与 sudo 一起使用:

1645395654: Loading config file /etc/mosquitto/conf.d/mosquito.conf 

这是在我使用以下命令之后:sudo systemctl kill mosquitto.service 试图消除端口错误。

已解决:我最终只在文件末尾使用了 allow_anonymous true。看来我是通过在 .conf 文件末尾输入 listener 1883 来获取错误信息的。我也开始重新启动服务,而不是尝试在控制台中 运行 它。感谢您的帮助!

安装 mosquitto 后会设置一个 systemd 服务,运行作为 mosquitto 用户。我让你尝试 运行 作为普通用户你会遇到几个问题

  1. 如果服务 运行 退出将会失败,因为 address/port 已经被服务使用
  2. 如果您先停止该服务,那么它将无法写入日志文件,因为它归 mosquitto 用户所有。

所以最好的测试方法是更新配置文件然后重新启动服务 (sudo service mosquitto restart) 并使用 journalctl -f -u mosquitto.service

跟踪日志