一、apt方式安装

增加安装源

sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa

sudo apt update 

使用apt安装mosquiito

sudo apt-get install mosquitto

启动重启和停止服务

sudo /etc/init.d/mosquitto restart/stop/start

配置文件

sudo vim /etc/mosquitto/mosquitto.conf

二、源码方式安装

安装依赖
sudo apt install gcc g++ make libssl-dev libcjson-dev libwebsockets-dev

有可能会遇到libcjson-dev不存在的情况
git clone https://github.com/DaveGamble/cJSON
cd cJSON
mkdir build
cd build
cmake ..
make
sudo make install

sudo wget https://mosquitto.org/files/source/mosquitto-2.0.15.tar.gz
tar -zxvf mosquitto-2.0.15.tar.gz
cd mosquitto-2.0.15
sudo make 
sudo make install

以指定配置文件的方式启动sudo mosquitto -c /etc/mosquitto/mosquitto.conf -d

如果使用sudo /etc/init.d/mosquitto start可能会遇到链接数限制的问题

二、配置文件

# pid文件
pid_file /var/run/mosquitto.pid

# 消息持久存储
persistence true
persistence_location /var/lib/mosquitto/

# 日志文件
log_dest file /var/log/mosquitto/mosquitto.log

#不记录
#log_type none

#########下面的debug、errorwarning.....等等可以组合使用。
#记录网络通信包,通信包大小(含心跳包),但不显示内容

# 记录debug
log_type debug

#错误信息(没见过)
log_type error

#警告信息(没见过)
log_type warning

#设备的订阅信息、发布信息及下线信息(端口、设备名、用户、不包发布内容)
log_type notice

#服务启动关闭信息、版本号、端口号、配置文件信息
log_type information

#所有设备订阅主题提醒
log_type subscribe

#这个没有试出来干啥用的(没见过)
#log_type unsubscribe


# 其他配置 这个docker配置中可以不要
include_dir /etc/mosquitto/conf.d

# 禁止匿名访问
allow_anonymous false

# 认证配置
password_file /mosquitto/pwdfile

# 权限配置
acl_file /mosquitto/aclfile

#如果需要外网可以访问,就必须指定mqtt协议
#MQTT协议
port 1883
protocol mqtt

# 设置最大连接数
max_connections -1

#websockets协议
listener 8000 
protocol websockets

#如果需要查看websockets日志还可以加入以下面
log_type websockets
websockets_log_level 0

# 设置前缀
clientid_prefixes guduyl

三、创建账号密码和权限控制

3.1 创建账号密码

创建一个
mosquitto_passwd -c /mosquitto/pwdfile lilei

增加一个,但这里的密码是明文,在history中可以看到
mosquitto_passwd -b /mosquitto/pwdfile hanmeimei 123

-c 是创建一个新的文件,只保存一个用户
-b 在文件中新增一个用户在最后
-D 从文件中删除指定用户
-H 密码加密方式
https://mosquitto.org/man/mosquitto_passwd-1.html

修改密码后需要重启服务sudo /etc/init.d/mosquitto restart,有可能需要重启2次

3.2 权限控制

# 打开配置
vi /mosquitto/aclfile

# 李雷只能发布以test为前缀的主题,订阅以$SYS开头的主题即系统主题
user lilei
topic write test/#
topic read $SYS/#

# 韩梅梅只能订阅以test为前缀的主题
user hanmeimei
topic write test/#
topic read test/#

参考

作者:admin  创建时间:2026-06-04 07:13
最后编辑:admin  更新时间:2026-06-04 07:13
上一篇:
下一篇: