• Centos 搭建MQTT


    第一步、安装Mosquitto

    在默认情况下,CentOS 7没有mosquitto程序包。首先我们将安装一个额外的软件软件包,即Epel。这个存储库囊括了安装在CentOS、RedHat和其他面向企业的Linux发行版上的附加软件。
    使用yum包管理器来安装epel-release包。

    sudo yum -y install epel-release
    
    • 1

    这条命令会将Epel存储库信息添加到我们的系统中,-y选项在整个过程中对一些提示自动回答“是”。现在我们可以安装mosquitto包。

    sudo yum -y install mosquitto
    
    • 1

    这个包附带了一个简单的默认配置,所以让我们运行它来测试我们的安装。

    sudo systemctl start mosquitto
    
    • 1

    我们还需要启用服务,以确保它在重新启动系统时启动:

    sudo systemctl enable mosquitto
    
    • 1

    现在让我们测试默认配置。mosquitto包附带了一些MQTT客户端命令行。我们将使用其中一个订阅代理上的主题。

    主题是您发布消息并订阅的标签。它们按等级排列,你可以有sensors/outside/temp和sensors/outside/humidity。在本教程中,我们将使用一个简单的测试主题来测试配置。

    您需要创建一个新的终端,创建方法很简单,重新打开一个新的终端页面,重新登录服务器即可。在新的终端中,使用mosquitto_sub订阅测试主题:

    mosquitto_sub -h localhost -t test
    
    • 1

    -h用于指定MQTT服务器的主机名,-t是主题名。ENTER后没有输出,是因为mosquitto_sub在等待消息的到来。切换回另一个终端并发布一条消息:

    mosquitto_pub -h localhost -t test -m "hello world"
    
    • 1

    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
    
    • 1

    现在,我们将替换默认的配置文件,并告诉Mosquito使用这个密码文件来要求所有连接的登录。首先,删除现有的mosquitto.conf.

    sudo rm /etc/mosquitto/mosquitto.conf
    
    • 1

    现在打开一个新的空配置。

    sudo vi /etc/mosquitto/mosquitto.conf
    
    • 1

    粘贴在下面。

    allow_anonymous false
    password_file /etc/mosquitto/passwd
    
    • 1
    • 2

    allow_anonymous false将禁用所有未经身份验证的连接,并且password_file告诉Mosquitto在哪里查找用户和密码,保存并退出文件。

    现在我们需要重新启动Mosquitto并测试。

    sudo systemctl restart mosquitto

    尝试在没有密码的情况下发布消息。

    mosquitto_pub -h localhost -t "test" -m "hello world"
    
    • 1

    你应该看到被拒绝的信息:

    Connection Refused: not authorised.
    Error: The connection was refused.
    
    • 1
    • 2

    在我们再次尝试使用密码登录之前,请再次切换到您的第二个终端窗口,并使用用户名和密码订阅“test”主题:

    mosquitto_sub -h localhost -t test -u "sammy" -P "password"
    
    • 1

    现在用另一个终端使用用户名和密码发布一条消息:

    mosquitto_pub -h localhost -t "test" -m "hello world" -u "sammy" -P "password"
    
    • 1

    消息应该按照步骤1执行。我们已经成功地为Mosquitto增加了密码保护。但是,我们在互联网上发送未加密的密码。接下来,我们将通过向Mosquitto添加SSL加密来修复这个问题。

  • 相关阅读:
    Python:函数定义的形参
    QT日志类SimpleQtLogger的简单记录
    B树的插入和删除
    React原理剖析之diff算法,一点也不难!!!
    Spring的创建与使用
    个人NuGet服务搭建,BaGet保姆及部署教程
    python学习笔记
    若依3.6.0使用Mybatis-plus分页失效以及完美替换Pagehelper【已解决】
    msm8909 获取启动原因
    JavaEE-多线程-Volatile关键字
  • 原文地址:https://blog.csdn.net/qq_25430563/article/details/128079526