简介
MQTT协议是广泛应用的物联网协议,使用测试MQTT协议需要MQTT的代理。有两种方法使用MQTT服务,一是租用现成的MQTT服务器,如阿里云,百度云,华为云等公用的云平台提供的MQTT服务,使用公用的MQTT服务器的好处是省事,但如果仅仅用于测试学习还需要注册帐号,灵活性差些,有的平台还需要付费。另一方法是自己使用开源的MQTT组件来搭建。
MQTT服务器非常多,如apache的ActiveMQ,emtqqd,HiveMQ,Emitter,Mosquitto,Moquette等等。
这里介绍的是用轻量级的mosquitto开源项目来搭建一个属于自己的MQTT服务器。
mosquittto一款实现了消息推送协议 MQTT v3.1 的开源消息代理软件,提供轻量级的,支持可发布/可订阅的的消息推送模式,使设备对设备之间的短消息通信变得简单,比如现在应用广泛的低功耗传感器,手机、嵌入式计算机、微型控制器等移动设备。
安装
windows上安装
mosquitto官网地址:https://mosquitto.org/;进入下载地址:https://mosquitto.org/download/,根据操作选择合适的版本

我这里选择window 64位的,所以选择的是windows 64位的,下载到本地,直接双击安装即可。如果提示缺文件,根据提示去下载相关文件即可。
安装之后的目录结构:

直接双击mosquitto.exe即可运行;也可以在cmd窗口上输入mosquitto.exe -c mosquitto.conf 启动;
linux下安装
在usr/local/创建一个文件夹mosquitto

到mosquitto官网下载对应linux版本的压缩包

也可以使用wget直接下载到linux服务器上。

然后进行解压:


cd mosquitto-1.6.5 进入解压后的目录,然后执行make 和make install;

如果出现这个错误,则需要安装一下openssl和libssl-devel
安装openssl-dev
ubuntu系统执行以下命令:
sudo apt-get install openssl
sudo apt-get install libssl-dev
centos系统执行以下命令:
sudo yum install openssl
sudo yum install openssl-devel
安装完再执行make:

出现这个错误,表示没有g++,需要安装: yum install gcc-c++
然后再make,然后再make install;安装完毕
mosqiutto的其他二进制文件安装在
/usr/local/bin下面,
mosquitto_passwd mosquitto_pub mosquitto_sub
安装后,我们把mosquitto.conf拷贝到/etc/mosquitto/下面。
修改mosquitto.conf中的user。修改为root

启动:mosquitto -c /etc/mosquitto/mosquitto.conf,即可启动。

用户和密码配置
1.用户参数说明
Mosquitto服务器的配置文件为/etc/mosquitto/mosquitto.conf,关于用户认证的方式和读取的配置都在这个文件中进行配置。
allow_anonymous允许匿名
password_file密码文件
acl_file访问控制列表
| ID | allow_anonymous | password_file | acl_file | result |
| 1 | true | 允许匿名方式登录 | ||
| 2 | false | password_file pwfile.example | 开启用户验证机制 | |
| 3 | false | password_file pwfile.example | acl_file aclfile.example | 开启用户验证机制,但访问控制不起作用 |
| 4 | true | password_file pwfile.example | acl_file aclfile.example | 用户名即密码不为空,讲自动进行用户验证且受到访问控制的限制;用户名和密码为,将不进行用户验证且受到访问控制的限制 |
| 5 | false | 无法启动服务器 |
不允许匿名:
allow_anonymoous false配置用户密码文件
password_file /etc/mosquitto/pwfile配置topic和用户
acl_file /etc/mosquitto/acl2.添加用户信息
添加用户 admin
#mosquitto_passwd -c /etc/mosquitto/pwfile admin3.添加topic和用户的关系

找到要的topic ---‘a/b’
#topic a/b在下面添加
user admin
topic write mtopic/#找到#This affects all clients
user admin
topic read mtopic/#4.用户认证测试
重启Mosquitto。
订阅端启动:
#mosquitto_sub -h 192.168.1.112 -t mtopic -u admin -P admin发布者客户端启动:
#mosquitto_pub -h 192.168.1.100 -t mtopic -u admin -P 123456 -m "test"