centos7 上搭建MQTT服务器,修改密码,设置权限并进行测试。

①.完成MQTT服务器的搭建

②.集成MQTT到springboot后台

③.使MQTT支持WebSocket以便前端与springboot进行消息收发。

④.集成MQTT到工控机中

 

1.安装

mosquitto已经被加入到EPEL仓库中,添加EPEL源后可以直接通过yum安装。

sudo yum -y install epel-release
sudo yum install mosquitto

 

2.启停控制

 控制mosquitto这个service即可。

#启动
sudo systemctl start mosquitto
#停止
sudo systemctl stop mosquitto
#重启
sudo systemctl restart mosquitto
#开机自启
sudo systemctl stop mosquitto



3. 提升安全等级


默认配置文件的位置是:/etc/mosquitto/mosquitto.conf。

 

(1)关闭allow_anonymous

    在配置文件中去掉allow_anonymous参数前的注释符#,并将选项修改为false。

allow_anonymous false

(2)开启mqtt的websocket服务

   开启后,前端或H5端可直接通过mqtt服务器与客户端及时消息通讯(如微信公众号 ——共享单车开锁)

   安装的是eclipse 的镜像docker版本的可直接在mosquitto.conf添加下面的命令即可使mqtt服务器支持websocket

port 1883
listener 9001
protocol websockets

(3)设置密码 

mqttroot 为用户名,输入此命令后会要求连续输入两次密码
注:第一次添加用户需用mosquitto_passwd -c,第二次则不用-c,否则会覆盖第一个用户

#mosquitto_passwd -c /etc/mosquitto/pwfile.example mqttroot

 重启mosquitto后配置生效,同时pwfile.example文件中的密码转为密文存储。

 

 

(4)用户权限控制
   修改用户权限 :vim /etc/mosquitto/aclfile.example
   aclfile.example文件示例如下: 

# 这会影响没有用户名的用户访问限制,让无用户名的客户端可以拥有订阅和发布权限
#topic read $SYS/#
#topic write $SYS/#


# 该topic只开放给“mqttroot”使用
#user mqttroot
#topic foo/bar

# This affects all clients.
#pattern write $SYS/broker/connection/%c/state

#遗嘱主题(客户端在connect的option属性中添加遗嘱message,这样当客户端异常断开时mqtt服务器会给
#订阅此topic的所有客户端发送遗嘱message),遗嘱主题在服务端检测客户端在线离线的时候用到。
#注:正常diconnect时,mqtt服务器是不会向订阅此主题的客户端推送message的。
user mqttroot
topic status/online

# 后台主题(工控机订阅)
user mqttroot
topic production/device/ipc/send/#(#通配符后面加设备号可实现一对一通讯,不加可实现一对多通讯)

# 工控机主题(后台订阅)
user mqttroot
topic production/device/ipc/rec/#(后台订阅所有工控机发回来的消息)

 

(3)测试效果(分别开三个xshell窗口,模拟MQTT服务器,发送者,订阅者)

  给foo/bar推送消息(发送者)

centos7 上搭建MQTT服务器,修改密码,设置权限并进行测试。_第1张图片

订阅foo/bar的消息(订阅者)

centos7 上搭建MQTT服务器,修改密码,设置权限并进行测试。_第2张图片

 

②给springboot集成MQTT

未完待续。。。(已完成)

③.使MQTT支持WebSocket以便前端与springboot进行消息收发。

1.前端可mqtt的websocket直接与工控机通讯,这样消息不经过后台。

2.前端可使用原始的websocket与后台通讯,后台再通过mqtt与工控机通讯,通讯结果在返回给前端。

(已完成)

④.集成MQTT到工控机中

(已完成)

⑤工控机发布遗嘱主题,后台实时检测工控机在线离线。效果如下:

centos7 上搭建MQTT服务器,修改密码,设置权限并进行测试。_第3张图片

你可能感兴趣的:(centos7 上搭建MQTT服务器,修改密码,设置权限并进行测试。)