MQTT
文章目录
一、MQTT简介
1. MQTT是一个在机器和机器之间传递消息的协议,为实现物联网设备间轻量级的发布/订阅通信而设计。
2. 广泛应用于汽车地理位置追踪,智能家居自动化,环境传感网络,以及各项公共事业的数据收集。
3. Mosquitto是一个流行的MQTT服务器(在MQTT协议中叫中继器或代理),拥有强大的社区支持,易于安装、配置。
- MQTT 是一个轻量级即时通信协议,使用基于 TCP/IP 协议的发布/订阅消息转发模式, MQTT 协议的中心是 broker(服务器/代理),客户端通过订阅消息和发布消息进行数据交互。
- 【MQTT协议消息】——MQTT中的消息可理解为发布者和订阅者交换的内容(负载),这些消息包含具体的内容,可以被订阅者使用。
- 【MQTT协议主题】——MQTT中的主题可理解为相同类型或相似类型的消息集合。
Mosquitto是一款实现了 MQTT v3.1 协议的开源消息代理软件,包括了服务器端和客户端,可以跨平台部署,提供轻量级的,支持发布/订阅的的消息推送模式,使设备对设备之间的短消息通信简单易用。
二、centos安装mqtt
为了安全起见。是推荐使用非root用户登录并使用,创建用户会安全点
1、下载mqtt
sudo yum install -y mosquitto mosquitto-clients
2、查看状态并启动
查看状态(目前没有启动)
sudo systemctl status mosquitto.service
启动mqtt
sudo systemctl start mosquitto.service
3、更新下系统软件(可做可不做)
sudo yum update
4、配置MQTT密码
Mosquitto包含了一个工具,用来生成一个特殊的密码文件mosquitto_passwd。
这个命令将提示你为指定的用户名输入密码,并把结果保存在/etc/mosquitto/passwd中。
这边小编将用户名和密码都指定成iot
sudo mosquitto_passwd -c /etc/mosquitto/passwd iot
如图:
5、 修改Mosquitto的配置文件
编辑配置文件,插入配置
vi /etc/mosquitto/mosquitto.conf
说明:
- allow_anonymous false将禁用未认证的链接
- password_file一行指定了Mosquitto从何处获取用户和密码信息
如图:
6、 重启mqtt
sudo systemctl restart mosquitto.service
7、 防火墙端口放行1883端口
记得开防火墙端口。
如果是云服务。在安全组要放开端口。Linux放行
- 云服务器的安全组放开端口
- Linux放行端口
添加指定需要开放的端口:
firewall-cmd --add-port=1883/tcp --permanent
重载入添加的端口:
firewall-cmd --reload
查询指定端口是否开启成功:
firewall-cmd --query-port=1883/tcp
8、 mqtt客户端测试使用
三、Ubuntu 安装mqtt
1、下载mqtt
sudo apt-get install mosquitto mosquitto-clients
注明:Ubuntu16.04默认软件仓库的mosquitto版本就挺新的,可以省去mosquitto仓库的引入及更新
可做可不做
sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa
sudo apt-get update
2、查看mqtt状态
# 状态
sudo systemctl status mosquitto.service
# 开启
sudo systemctl start mosquitto.service
# 关闭
sudo systemctl stop mosquitto.service
# 重启
sudo systemctl restart mosquitto.service
如图:
3、配置MQTT密码
指定用户名和密码都为 iot(自己修改)
sudo mosquitto_passwd -c /etc/mosquitto/passwd iot
4、给Mosquitto创建新的配置和指定密码文件
#使用nano或者vi都行
sudo nano /etc/mosquitto/conf.d/default.conf
内容
allow_anonymous false
password_file /etc/mosquitto/passwd
如图:
说明:
- allow_anonymous false将禁用未认证的链接
- assword_file一行指定了Mosquitto从何处获取用户和密码信息
5、重启Mosquitto
sudo systemctl restart mosquitto.service
6、防火墙端口放行
#查看防火墙状态(显示所有放行的端口)
sudo ufw status
#安装防火墙
sudo sudo apt-get install ufw
#开启防火墙
sudo ufw enable
#端口放行 例如1883
sudo ufw allow 1883
#重启ufw防火墙
sudo ufw reload
#查看1883端口监听信息信息
sudo netstat -tunlp | grep 1883
#看是否ping得通
telnet linux的Ip 端口
#关闭防火墙
sudo ufw disable
7、mqtt客户端测试使用
四、开机自启动
root用户
自启动mqtt
systemctl enable mosquitto.service
查看又那些服务是自启动的
ll /etc/systemd/system/multi-user.target.wants/
或者
systemctl list-dependencies
下一篇:在Java中集成mqtt使用