CentOS7安装mosquitto【超详细】
文章目录一、安装一下载二安装依赖包三解压安装四参考文章二、MQTT客户端三、问题列表一../../config.h:86:27: 致命错误cjson/cJSON.h没有那个文件或目录二cmake: 未找到命令三CMake 3.0 or higher is required. You are running version 2.8.12.2四Warning: Unable to drop privileges to mosquitto because this user does not五local only mode一、安装一下载mosquitto下载地址这里使用mosquitto-2.0.14.tar.gz版本下载完毕后使用shell工具将压缩包上传至服务器我这里是传到了/usr/local/目录下。二安装依赖包# 基础编译环境yuminstallgcc gcc-cmake# 开发库yuminstallopenssl-devel c-ares-devel libuuid-devel# Python 环境yuminstallpython python3 python-setuptools# 其他工具yuminstallquilt三解压安装# 解压 mosquitto-2.0.14.tar.gz 压缩包tar-xvfmosquitto-2.0.14.tar.gz# 进入解压后的 mosquitto-2.0.14 目录cdmosquitto-2.0.14/# 编译并安装 mosquitto 表示前一个命令成功后才执行后一个命令makemakeinstall# 安装完成后返回上级目录并重新进入 mosquitto-2.0.14 目录cd../mosquitto-2.0.14/# 复制示例配置文件到 /etc/mosquitto/ 目录下cp/etc/mosquitto/mosquitto.conf.example /etc/mosquitto/mosquitto.conf# 以守护进程模式启动 mosquitto使用指定配置文件并启用详细日志输出mosquitto-c/etc/mosquitto/mosquitto.conf-d-v# 正常情况下执行启动命令后无任何输出是正常的但若有类似Warning的输出大概率你需要参考下面问题列表中的问题五来解决一般在执行make make install命令时出现的问题比较多可以参考下面的问题列表解决四参考文章CentOS7下安装Mosquitto(2.0.11版本)Windows环境下安装和使用Mosquitto可参考phmatthaus的MQTT专栏Springboot实现MQTT通信一文搞懂MQTT如何在SpringBoot中使用MQTT实现消息的订阅和发布MQTT 客户端重连二、MQTT客户端MQTTX官网MQTTX官网下载页面Windows 64位系统选择图中红框版本即可三、问题列表总之一句话按照缺少啥安装啥的思路来解决问题其实你会发现出现问题一般就是缺少依赖包或者是版本冲突一../../config.h:86:27: 致命错误cjson/cJSON.h没有那个文件或目录报错截图问题原因缺少cJSON库导致的需要安装cJSON库。解决方案安装git# 先确认是否已经安装git# -如果返回类似 /usr/bin/git 的路径 → Git 已安装# -如果返回空或 git not found → Git 未安装whichgit# 未安装git则执行安装命令已安装可以直接安装cJSON库yuminstallgit安装cJSON库# 从GitHub克隆cJSON仓库到本地下载过程可能较慢且容易失败需注意网络状况gitclone https://github.com/DaveGamble/cJSON.git# 进入克隆下来的cJSON项目目录cdcJSON/# 创建build目录用于存放编译构建文件mkdirbuild# 进入build目录cdbuild# 使用CMake生成Makefile..表示上级目录即cJSON根目录cmake..# 执行cmake命令时若提示未找到 可以参考下面的问题二来解决# 编译cJSON库make# 安装cJSON库到系统目录通常为/usr/local/lib和/usr/local/includemakeinstall结果验证locate cJSON.h若提示【locate: 未找到命令】则使用yum命令安装即可yum install mlocate安装完成在第一次使用locate命令之前必须使用updatedb指令来创建或更新locate数据库以确保查询结果的准确性。否则可能会出现类似这样的报错【locate: 无法执行 stat () /var/lib/mlocate/mlocate.db’: 没有那个文件或目录】详细说明请参考执行locate命令报错“locate: 无法执行 stat () /var/lib/mlocate/mlocate.db: 没有那个文件或目录“能够找到cJSON.h则表示安装成功如下图所示参考文章【物联网】mosquitto-2.0.15安装时fatal error cjson cJSON.h 没有那个文件或目录二cmake: 未找到命令解决方案# 通过wget下载cmake版本若提示【wget: 未找到命令】使用yum命令安装即可yum -y install wgetwgethttps://cmake.org/files/v3.21/cmake-3.21.0.tar.gz# 解压tar-zxvfcmake-3.21.0.tar.gz# 进入解压目录cdcmake-3.21.0/# 执行命令指令安装这一步会比较慢耐心等待./bootstrapmakesudomakeinstall# ./bootstrap报无权限使用 chmod ox bootstrap 添加执行权限# 查看版本信息并检查是否安装成功cmake-version结果验证参考文章cmake未找到命令解决Centos7安装cmake三CMake 3.0 or higher is required. You are running version 2.8.12.2参考文章解决Linux | 升级CMAKE版本四Warning: Unable to drop privileges to mosquitto because this user does not问题原因Mosquitto 默认配置会以 mosquitto 这个低权限用户运行以提高安全性但你的系统里还没有创建这个用户。解决方案# 创建 mosquitto 用户-r 表示系统用户-s /sbin/nologin 表示禁止登录sudouseradd-r-s/sbin/nologin mosquitto五local only mode问题描述mosquitto在服务器上成功启动后无法在本地电脑上使用MQTT客户端连接并且服务器上的防火墙也是关闭状态问题原因mosquitto服务默认是local only mode模式可以使用mosquitto -v命令来验证解决方案编辑 /etc/mosquitto/mosquitto.conf 文件sudo vim /etc/mosquitto/mosquitto.conf修改以下配置项# 设置允许匿名连接如果禁止匿名连接则需要配置账号、密码连接生产环境还是建议使用用户名密码认证这里仅是入门了解图省劲直接允许匿名访问了 allow_anonymous true # 允许所有网络接口连接0.0.0.0 表示监听所有IP listener 1883 0.0.0.0重启 mosquitto 服务# 查看mosquitto服务进程ps-aux|grepmosquitto# 先停止当前进程pkillmosquitto# 重新启动mosquitto-c/etc/mosquitto/mosquitto.conf-d