centos 安装 mqtt服务到订阅的整个过程
一、安装Mosquitto
在默认情况下,CentOS 7没有mosquitto程序包。首先我们将安装一个额外的软件软件包,即Epel。这个存储库囊括了安装在CentOS、RedHat和其他面向企业的Linux发行版上的附加软件。
使用yum包管理器来安装epel-release包。
sudo yum -y install epel-release
安装mosquitto
sudo yum -y install mosquitto
启动
sudo systemctl start mosquitto
重新启动系统时启动:
sudo systemctl enable mosquitto
现在让我们测试默认配置。mosquitto包附带了一些MQTT客户端命令行。我们将使用其中一个订阅代理上的主题。
主题是您发布消息并订阅的标签。它们按等级排列,你可以有sensors/outside/temp和sensors/outside/humidity。在本教程中,我们将使用一个简单的测试主题来测试配置。
您需要创建一个新的终端,创建方法很简单,重新打开一个新的终端页面,重新登录服务器即可。在新的终端中,使用mosquitto_sub订阅测试主题:
mosquitto_sub -h localhost -t test
-h用于指定MQTT服务器的主机名,-t是主题名。ENTER后没有输出,是因为mosquitto_sub在等待消息的到来。切换回另一个终端并发布一条消息:
mosquitto_pub -h localhost -t test -m "hello world"
mosquitto_pub的选项与mosquitto_sub相同,这一次我们使用了额外的-m选项来指定我们的消息。点击ENTER,你应该看看hello world 输出在在另一个终端中。你已经学会发送第一条MQTT信息!
在第二个终端中按下CTRL+C退出mosquitto_sub,不要关闭其他终端哦,后面我们还要进行测试。
二、配置MQTT密码
Mosquitto包含一个工具,用于生成一个特殊的密码文件,名为mosquitto_passwd。此工具将提示您输入指定用户名的密码,并将结果放在/etc/mosquitto/passwd.
sudo mosquitto_passwd -c /etc/mosquitto/passwd sammy
现在,我们将替换默认的配置文件,并告诉Mosquito使用这个密码文件来要求所有连接的登录。首先,删除现有的mosquitto.conf.
sudo rm /etc/mosquitto/mosquitto.conf
现在打开一个新的空配置。
sudo vi /etc/mosquitto/mosquitto.conf
粘贴在下面。
allow_anonymous false
password_file /etc/mosquitto/passwd
allow_anonymous false将禁用所有未经身份验证的连接,并且password_file告诉Mosquitto在哪里查找用户和密码,保存并退出文件。
现在我们需要重新启动Mosquitto并测试。
sudo systemctl restart mosquitto
尝试在没有密码的情况下发布消息。
mosquitto_pub -h localhost -t "test" -m "hello world"
再次尝试使用密码登录之前,请再次切换到您的第二个终端窗口,并使用用户名和密码订阅“test”主题:
mosquitto_sub -h localhost -t test -u "sammy" -P "password"
现在用另一个终端使用用户名和密码发布一条消息:
mosquitto_pub -h localhost -t "test" -m "hello world" -u "sammy" - "password"`
下面是mqtt测试工具地址
https://mqttx.app/zh
下面是测试推送情况
关注我,每天看精彩。
这是mqtt简单的使用流程,后期有新认知会继续更新。