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的工作原理和高级特性。