当前位置: 首页 > news >正文

mosquitto求医之路(3):Docker安装也不好使

折腾好久Mosquitto还是起不来,最后逼上梁山只能用docker。
--先卸载
localhost:/var/log/mosquitto # systemctl stop mosquitto
localhost:/var/log/mosquitto # zypper remove mosquitto mosquitto-clients
Reading installed packages...
Resolving package dependencies...
The following 2 packages are going to be REMOVED:
mosquitto mosquitto-clients
2 packages to remove.
Package install size change:
|         0 B    required by packages that will be installed
-1017.2 KiB  |  - 1017.2 KiB  released by packages that will be removed

Backend:  classic_rpmtrans
Continue? [y/n/v/...? shows all options] (y): y
Removed "/etc/systemd/system/multi-user.target.wants/mosquitto.service".
warning: /etc/mosquitto/mosquitto.conf saved as /etc/mosquitto/mosquitto.conf.rpmsave
(1/2) Removing: mosquitto-2.0.21-bp156.2.6.1.x86_64 ....................................................................................................................................................[done]
(2/2) Removing: mosquitto-clients-2.0.21-bp156.2.6.1.x86_64 ............................................................................................................................................[done]
--清理残留的文件和文件夹
localhost:/var/log/mosquitto # rm -rf /etc/mosquitto/
localhost:/var/log/mosquitto # rm -rf /var/log/mosquitto/
localhost:/var/log/mosquitto # rm -rf /var/lib/mosquitto/

--清理用户和用户组mosquitto
localhost:/var/log/mosquitto # userdel -r mosquitto 2>/dev/null || true
localhost:/var/log/mosquitto # getent group mosquitto

--重置服务
localhost:/var/log/mosquitto # rm -f /etc/systemd/system/mosquitto.service
localhost:/var/log/mosquitto #  systemctl daemon-reload
localhost:/var/log/mosquitto # systemctl reset-failed mosquitto.service 2>/dev/null || true

--检查残留信息
localhost:/var/log/mosquitto # rpm -qa | grep -i mosquitto
libmosquitto1-2.0.21-bp156.2.6.1.x86_64
localhost:/var/log/mosquitto # sudo rpm -e libmosquitto1-2.0.21-bp156.2.6.1.x86_64
localhost:/var/log/mosquitto # getent group mosquitto
localhost:/var/log/mosquitto # id mosquitto

--安装mosquitto docker
localhost:/home # mkdir mosquitto
localhost:/home # cd mosquitto
localhost:/home/mosquitto # ls
localhost:/home/mosquitto # docker pull eclipse-mosquitto:latest
latest: Pulling from library/eclipse-mosquitto
9824c27679d3: Already exists
8be3a6e695b8: Pull complete
e661fc39aa0a: Pull complete
Digest: sha256:d219d3a72847f3aed6a1d66975972d3b17f86e39e8f6f6b86b4088b879c1a2d6
Status: Downloaded newer image for eclipse-mosquitto:latest
docker.io/library/eclipse-mosquitto:latest
localhost:/home/mosquitto # sudo docker run -d --name mosquitto \
>   -p 1883:1883 \
>   -p 9001:9001 \
>   -v /home/mosquitto/config:/mosquitto/config \
>   -v /home/mosquitto/data:/mosquitto/data \
>   -v /home/mosquitto/log:/mosquitto/log \
>   eclipse-mosquitto
8988291b554430e7c8b94a76c8d4260547b5725172a3f43ed13d2f839fa57af1
虽然成功启动docker,但是再在我的本地目录中不存在配置文件mosquitto.conf。

--转用docker-compose.yaml,先创建文件

version: '3'

services:
mosquitto:
image: eclipse-mosquitto:latest
container_name: mosquitto
restart: unless-stopped
ports:
- "1883:1883"
- "9001:9001"
volumes:
- ./config:/mosquitto/config
- ./data:/mosquitto/data
- ./log:/mosquitto/log
- ./var:/var/run/mosquitto
# 首次运行时,从容器内复制默认配置到本地卷
command: sh -c "cp -n /mosquitto/config_orig/* /mosquitto/config/ 2>/dev/null || true && /usr/sbin/mosquitto -c /mosquitto/config/mosquitto.conf"

--启动,还是没有mosquitto.conf文件
使用docker-compose.yml指定也不行,那就只能手动创建mosquitto.conf
让deepseek推荐了一个,拷贝粘贴搞定。AI就是好,这个真的要省很多事。
# ========================
# Mosquitto MQTT Broker 配置
# ========================
# 基础设置
# 允许守护进程模式(在后台运行)
daemon false
# 设置进程ID文件位置
pid_file /var/run/mosquitto.pid
# 监听器设置
# 主MQTT监听器 - 监听所有网络接口的1883端口
listener 1883 0.0.0.0
protocol mqtt

# 可选:WebSocket监听器(如需浏览器客户端连接)
# listener 9001 0.0.0.0
# protocol websockets

# 安全设置
# 允许匿名连接(生产环境中应设置为false并配置密码)
allow_anonymous false

# 密码文件路径(如果启用密码认证)
password_file /mosquitto/config/passwd

# ACL访问控制列表文件路径(如需细粒度权限控制)
# acl_file /mosquitto/config/aclfile

# 持久化设置
# 启用持久化存储(存储订阅信息和保留消息)
persistence true

# 持久化数据存储位置
persistence_location /mosquitto/data/

# 持久化数据库文件
persistence_file mosquitto.db

# 自动持久化间隔(秒)
# autosave_interval 1800

# 日志设置
# 将日志输出到文件
log_dest file /mosquitto/log/mosquitto.log

# 包含所有类型的日志信息
log_type all

# 可选:同时输出到标准输出(便于Docker日志查看)
log_dest stdout

# 连接设置
# 最大同时连接数(默认-1表示无限制)
# max_connections -1

# 消息设置
# 消息最大大小(字节,默认约268MB)
# message_size_limit 0

# 保留消息支持
# retain_available true

# 每个客户端的最大排队消息数
# max_queued_messages 1000

# 桥接设置(如需连接其他MQTT代理)
# connection bridge-to-broker2
# address broker2.example.com:1883
# topic # both 0

--还是启动失败

localhost:/home/mosquitto # docker-compose up -d
localhost:/home/mosquitto# docker logs mosquitto
1758371638: Error: Unable to open config file /mosquitto/config/mosquitto.conf.
1758371639: Error: Unable to open config file /mosquitto/config/mosquitto.conf.
1758371640: Error: Unable to open config file /mosquitto/config/mosquitto.conf.
1758371641: Error: Unable to open config file /mosquitto/config/mosquitto.conf.

--再改权限:还是起不来,还是目录权限问题。
localhost:/home/mosquitto # chown -R 1000:1000 /home/mosquitto/config/
localhost:/home/mosquitto # chmod 644 /home/mosquitto/config/mosquitto.conf
还是同样错误。
--注释掉配置文件mosquitto.conf中的
# 允许守护进程模式(在后台运行)
daemon false --注销掉
老错误没有了,新错误出现:
localhost:/home/mosquitto/config # docker logs mosquitto
1758372875: Error: Unable to write pid file.

继续配置文件将 pidfile注释掉,不再报错,但是还是文件访问错误。
localhost:/home/mosquitto/config # docker logs mosquitto
1758374776: mosquitto version 2.0.22 starting
1758374776: Config loaded from /mosquitto/config/mosquitto.conf.
1758374776: Error: Unable to open pwfile "/mosquitto/config/passwd".
还是权限问题。

--Deepseek也弄休克了
问deepseek,翻来覆去就是让改权限,问多了它就习惯性装死,你重开一个话题,它又是一个循环,deepseek这个医生有时候不太行。

http://www.dtcms.com/a/395497.html

相关文章:

  • 字节 TRAE:AI 原生 Coding Agent 的工程化架构与实战落地
  • 保姆级教程:windows和linux双系统的电脑如何无副作用,安全删除linux
  • SSM宠物领养平台16e63(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • 大前端系统课教程(视频教程)
  • Bulutistan:融合本地与云端,借 Azure Arc 开启创新之旅
  • 北极象沉浸式翻译 - 沉浸式翻译 | 免费翻译 | PDF翻译
  • C++编码
  • WKT、WKB和GeoJson
  • 【开题答辩全过程】以 基于大数据的混合音乐推荐系统为例,包含答辩的问题和答案
  • 【complex system science 4 precision medicine】
  • (4) Tauri调试
  • destr错误
  • 数据定义:数字化控制系统技术分析-2
  • pyhon接口自动化的一些编码规范
  • SimLab Composer下载与安装教程(附安装包)2025最新版详细图文安装教程
  • 一些知识点的复习
  • CTFHub 文件上传-MIME
  • 用什么样的审批标准和流程安全又高效?
  • 人工智能驱动知识管理:应用价值与最佳实践场景解析
  • SSM滁州学院考研信息分享论坛0iaj2 (程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
  • [OpenGL]简单几何类设计
  • 堆排序的应用
  • python13——异常处理
  • AXI_CAN IP 简单使用。(仿真、microblaze)
  • zabbix-mcp-server:使用自然语言操作Zabbix
  • 【Makefile】Linux内核模块编译
  • Qt 系统相关 - 音视频
  • Go基础:Go语言中的指针详解:在什么情况下应该使用指针?
  • ReactNative性能优化实践方案
  • 大数据数仓面试问题