centos mosquitto?centos7安装第三方软件

海豚MQTT-Mosquitto(1)

在决定使用MQTT协议后,搭建MQTT服务器的首要任务是选择MQTT Broker。虽然云平台提供了付费服务,但个人项目成本较高,因此个人用户可能会选择自建服务器,如之前双十一购买的低配服务器,非常适合实验用途。

在选择后台方案时,市场上MQTT Broker选项众多。早期,我曾参考过一些资料,那时Mosquitto因其轻量级和C语言实现的优点,是我的首选。然而,鉴于其更新不频繁且扩展功能有限,上一次搭建过程中遇到不少困难,这次我决定寻找更为现代化的解决方案,尽管它曾是我的起点。

安装和运行Mosquitto在Centos服务器上相对简单,只需要几个命令即可。为了保证安全性,我关闭了默认的匿名访问,通过创建adam用户并存储在/etc/mosquitto/clipasswd文件中,并设置了用户密码登录。接着,我修改了mosquitto.conf文件,强制客户端使用用户名和密码进行认证,并重启了服务。

接下来,我开始转向SSL加密,需要生成自签名的证书。通过一系列命令,我生成了cacert.pem, server.crt,和server.key文件。然后,我修改了mosquitto.conf,将非加密端口绑定到本地,添加了SSL相关配置,并重启了服务。测试连接时,确保使用正确的域名和证书文件。

然而,仅此还不够,我需要对访问权限进行控制。这超出了Mosquitto的基本功能,需要借助第三方插件mosquitto-auth-plug来实现。但该插件已停止维护,且与我使用的mosquitto-1.6.10版本存在兼容性问题。我下载了对应版本的源码和openssl,进行了编译,并对auth-plug.c文件进行了必要的修改。接着,我将mosquitto的动态库调整到正确位置,并在Makefile中添加了链接参数。

在配置mosquitto时,我删除了之前用到的密码文件,转而依赖数据库管理。我创建了数据库表,定义了新的权限规则,并利用mosquitto的np工具生成用户密码,将其写入数据库。至此,通过MySQL控制用户登录和权限的Mosquitto配置已完成。

最后,为了测试MQTT服务器的性能,我附带了一个压测工具。通过以上步骤,一个安全且可扩展的MQTT服务器已经搭建完毕,满足了对用户访问权限的控制需求。

Linux搭建MQTT服务器(mosquitto)并使用

### MQTT与Linux环境搭建

MQTT(消息队列遥测传输)是ISO标准下基于发布/订阅范式的消息协议,适用于硬件性能受限、网络状况不佳的远程设备。它在TCP/IP协议族上运行,适用于物联网(IoT)场景,如传感器通信、医疗设备、智能家居等。

**Linux上MQTT环境搭建**

为了在Linux系统中部署MQTT服务器,以CentOS7为例,遵循以下步骤搭建环境。

**1.安装必备软件**

确保系统具备基础软件包,为后续操作做准备。

**2.下载Mosquitto**

选择稳定版本1.6.8,避免因新版本的兼容性问题导致的依赖缺失。从官方网站mosquitto.org下载,或通过wget命令直接下载并传输至服务器。

**3.解压、编译与安装**

解压下载的包,执行编译与安装命令。遇到libmosquitto.so.1找不到的问题时,通过修改链接路径,确保动态链接库的可用性。

**4.创建配置文件**

替换默认example配置文件,根据需求调整端口、密码文件位置、监听端口、绑定网卡及日志记录等参数。

**5.创建用户组与用户**

创建mosquitto用户组与用户,确保程序运行权限正确。如不需特定用户,考虑修改配置文件以适应环境。

**6.启动、查看与关闭程序**

启动mosquitto服务,使用命令行工具检查进程状态与执行关闭操作。默认后台运行,通过ps命令查看后台进程。

**7.本地测试**

使用订阅者与发布者工具,设置相同topic进行消息交换。发布者发送内容至订阅者,验证消息传递。

**8.修改默认配置**

**1.关闭匿名用户登录**

在mosquitto.conf中修改allow_anonymous节点,设置为false,禁用匿名登录功能。

**2.设置用户密码文件路径**

在配置文件中指定password_file节点,配置用户密码文件路径,确保密码存储安全。

**3.创建自定义用户**

通过命令行创建用户,并设置密码。注意用户信息存储于指定路径的配置文件中,密码已加密。

**4.重启mosquitto服务**

完成配置修改后,重启mosquitto服务,确保新配置生效。

**Python实现订阅与发布**

在Python环境中,使用MQTT库实现订阅者与发布者功能。启动订阅者并连接至MQTT服务器,验证连接状态。通过发布者发送消息至指定topic,订阅者接收并显示消息内容。

阿里云上安装Mosquitto

MQTT(消息队列遥测传输)是一个轻量级的发布/订阅消息传输协议,广泛应用于物联网设备之间进行通讯。

在 CentOS系统中安装 MQTT,首先,确保你的系统已更新:

bash

sudo yum update

然后,使用 EPEL存储库安装 mosquitto和 mosquitto-clients包:

bash

sudo yum install epel-release

bash

sudo yum install mosquitto mosquitto-clients

安装完成后,将获得一组对应的命令,如 `mosquitto_pub`和 `mosquitto_sub`,用于发布和订阅消息。

测试 MQTT是否可用,可以使用 `mosquitto_sub`命令订阅一个主题,例如:

bash

mosquitto_sub-h localhost-t"test/topic"-m"test message"

安装 MQTT后,可设置认证信息以增强安全性。Mosquitto提供四种认证方式,包括无认证、用户名和密码认证、证书认证以及组合认证。

调整 Mosquitto的默认端口(默认为 1883)或添加额外端口,可以在 `/etc/mosquitto/mosquitto.conf`文件中进行配置。为了允许阿里云服务器上的 MQTT通讯,需要在安全组规则中新增 1883端口。

完成配置后,即可在本地机器上使用 MQTT进行通讯。

深入研究 MQTT的配置和使用方法,可参考官方文档或相关教程,以更全面地了解 MQTT的工作原理和高级特性。

阅读剩余
THE END