【环境搭建】linux centos7安装mosquitto消息代理软件操作步骤以及遇到问题日常记录

最近需要用到mqtt, 选择安装mosquitto。由于安装mosquitto花了我一点时间,简单记录下。安装环境是linux centos7,  其他像windows、mac或者ubuntu 参考下  https://mosquitto.org/download/  英文官网,或者别人写的文章。

服务器建立mqtt文件夹

wget https://mosquitto.org/files/source/mosquitto-2.0.18.tar.gztar -xvf mosquitto-2.0.18.tar.gzcd mosquitto-2.0.18/make && make install

问题:安装mosquitto时报g++:命令未找到

解决方案:

安装编译工具 yum install -y gcc-c++

问题:重新执行make && make install,继续报错config.h:86:12: fatal error: cjson/cJSON.h: No such file or directory

图片

解决方案:那就网上找cJSON包安装下, 在mqtt目录下执行安装

先确认下是否已经安装git,没有的话。yum install git

git clone https://github.com/DaveGamble/cJSON.git

cd cJSON/

make && make install

安装完毕后,切换回

cd ../mosquitto-2.0.18/

重新执行make && make install , 按照缺少啥安装啥的思路

图片

cp /etc/mosquitto/mosquitto.conf.example /etc/mosquitto/mosquitto.confmosquitto -c /etc/mosquitto/mosquitto.conf -d -v

问题:Unable to drop privileges to ‘mosquitto’ because this user does not exist. Trying ‘nobody’ instead

解决方案:

groupadd mosquitto

useradd -g mosquitto mosquitto

 chown -R mosquitto:mosquitto /etc/mosquitto/

su  mosquitto  重新执行启动命令

大于2.0.0版本的mosquitto,默认配置只会绑定到localhost,如果希望其他机器访问,需要使用配置文件添加, 也可以自己修改端口号。

listener 1883 0.0.0.0

修改密码方法如下:

1、找到并打开Mosquitto服务器的配置文件 

vi /etc/mosquitto/mosquitto.conf

2、将其中的配置选项allow_anonymous改为 false,禁止匿名登录

allow_anonymous false   保存

3、将密码配置选项配置如下:

password_file /etc/mosquitto/pwfile

4、默认该目录下没有该文件,则进入该目录,并拷贝一份,命令如下:  

cp /etc/mosquitto/pwfile.example  /etc/mosquitto/pwfile

5、添加用户信息。在终端执行以下代码,应用mosquitto_passwd命令创建用户名, username修改成自己的

mosquitto_passwd -c /etc/mosquitto/pwfile username

 执行以后会提示输入密码,重复2次输入之后,用户名密码配置完成。

6、重新启动mosquitto服务之后,用户名密码生效

图片

问题:mosquitto_sub: error while loading shared libraries: libmosquitto.so.1: cannot open shared object file: No such file or directory

解决方案:

ln -s /usr/local/lib/libmosquitto.so.1 /usr/lib/libmosquitto.so.1

ldconfig

继续执行,又报错

问题: mosquitto_sub: error while loading shared libraries: libcjson.so.1: cannot open shared object file: No such file or directory

解决方案

ln -s /usr/local/lib/libcjson.so.1 /usr/lib/libcjson.so.1

ldconfig

客户端测试:​​​​​​​

(1)订阅命令mosquitto_sub参数说明
-d 打印debug信息
-h 指定要连接的域名 默认为localhost
-i 指定clientId
-I 指定clientId前缀
-k keepalive 每隔一段时间,发PING消息通知broker仍处于连接状态,默认为60秒。
-q 指定希望接收到QoS为什么的消息 默认QoS为0
-R 不显示陈旧的消息
-t 订阅topic
-v 打印消息
–will-payload 指定一个消息,该消息当客户端与broker意外断开连接时发出。该参数需要与–will-topic一起使用
–will-qos Will的QoS值。该参数需要与–will-topic一起使用
–will-retain 指定Will消息被当做一个retain消息(即消息被广播后,该消息被保留起来)。该参数需要与–will-topic一起使用
–will-topic 用户发送Will消息的topic
(2)发布命令mosquitto_pub参数说明
-d 打印debug信息
-f 将指定文件的内容作为发送消息的内容
-h 指定要连接的域名 默认为localhost
-i 指定要给哪个clientId的用户发送消息
-I 指定给哪个clientId前缀的用户发送消息
-m 消息内容
-n 发送一个空(null)消息
-p 连接端口号-q 指定QoS的值(0,1,2)
-t 指定topic
-u 指定broker访问用户
-P 指定broker访问密码
-V 指定MQTT协议版本
–will-payload 指定一个消息,该消息当客户端与broker意外断开连接时发出。该参数需要与–will-topic一起使用
–will-qos Will的QoS值。该参数需要与–will-topic一起使用
–will-retain 指定Will消息被当做一个retain消息(即消息被广播后,该消息被保留起来)。该参数需要与–will-topic一起使用
–will-topic 用户发送Will消息的topic​​​​​​​

自己简单的命令示例                      

 mosquitto_sub  -h ip -u username -P password  -t test_topic  -v

mosquitto_pub  -h ip -u username -P  password -t test_topic  -m 'helloworld'

mac客户端(mqttx)

git clone https://github.com/emqx/mqttx通过brew install --cask mqttx安装

这里直接偷懒用 发行版 安装,先是通过https://github.com/emqx/MQTTX/releases/tag/v1.9.9 下载发行版 https://github.com/emqx/MQTTX/releases/download/v1.9.9/MQTTX-1.9.9-arm64.dmg 安装,安装打开报错,您使用的是macOS 10.15.7,该应用程序要求macOS 11.0或更高版本。

既然我的mac系统版本太低不支持1.9,那就找个1.8的。https://github.com/emqx/MQTTX/releases/tag/v1.8.3 , 下载链接

https://github.com/emqx/MQTTX/releases/download/v1.8.3/MQTTX-1.8.3.dmg

图片

自己操作的安装步骤,随心所记

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/715368.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微型世界:嵌入式科技的无限可能

微型世界:嵌入式科技的无限可能 1. 嵌入式科技的定义与特点 定义:嵌入式科技是一种特殊的计算机系统,通常用于特定的应用领域,如智能手机、智能家居设备等。特点:小巧、低功耗、高效率、实时性强、可靠性高、成本较低…

洛谷题单_搜索

P1219 [USACO1.5] 八皇后 Checker Challenge - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) #include <bits/stdc.h> using namespace std; const int N14; int n,ans0; int a[N][N]{},vis[N][N]{}; vector<int>rcd(n1); void dfs(int dep){if(depn1){if(ans<…

有道QAnything背后的故事---关于RAG的一点经验分享

近日&#xff0c;我们开源了有道自研的RAG&#xff08;Retrieval Augmented Generation) 引擎QAnything。该引擎允许用户上传PDF、图片、Word、Excel、PowerPoint等多种格式的文档&#xff0c;并实现类似于ChatGPT的互动问答功能&#xff0c;其中每个答案都能精确追溯到相应的文…

了解Spring中Bean:配置与作用域

作为一名对技术充满热情的学习者&#xff0c;我一直以来都深刻地体会到知识的广度和深度。在这个不断演变的数字时代&#xff0c;我远非专家&#xff0c;而是一位不断追求进步的旅行者。通过这篇博客&#xff0c;我想分享我在某个领域的学习经验&#xff0c;与大家共同探讨、共…

递归回溯剪枝-括号生成

LCR 085. 括号生成 - 力扣&#xff08;LeetCode&#xff09; 一. 根据题意&#xff0c;分析出符合要求的括号组合需要满足以下两个条件&#xff1a; 1. 左括号数或者右括号数都不能超过 n&#xff1b; 2. 从最左侧开始的每一个子集&#xff0c;不可以出现右括号数大于左括号数&…

CF 1934B

冗长的代码&#xff08;枚举解法&#xff09; #include<bits/stdc.h>using namespace std;void solve() {int n;cin>>n;if(n1||n3||n6||n10||n15){cout<<1<<endl;return;}int cnt0;if(n>100){int tempn/15;if(temp>6){n-(temp-6)*15;cnttemp-6;…

算法复习之前缀和【备战蓝桥杯】

一维前缀和 S[i] a[1] a[2] ... a[i] a[l] ... a[r] S[r] - S[l - 1]二维前缀和 S[i, j] 第i行j列格子左上部分所有元素的和 以(x1, y1)为左上角&#xff0c;(x2, y2)为右下角的子矩阵的和为&#xff1a; S[x2, y2] - S[x1 - 1, y2] - S[x2, y1 - 1] S[x1 - 1, y1 - …

中国电子学会(CEIT)2020年06月真题C语言软件编程等级考试四级(含详细解析答案)

中国电子学会&#xff08;CEIT&#xff09;考评中心历届真题&#xff08;含详细解析答案&#xff09; C语言软件编程等级考试四级 2020年06月 编程题四道 总分:100分一、最长上升子序列&#xff08;25分&#xff09; 一个数的序列bi&#xff0c;当b1 < b2< … &l…

长期可用的文件二维码怎么做?在线制作可修改的文件活码

怎么做一个可以长期使用的文件二维码呢&#xff1f;现在通过二维码来传递文件是很流行的一种方式&#xff0c;将文件生成二维码后印刷上墙或者分享给他人都可以快速完成文件的传播&#xff0c;所以在下发通知、资料等方面用途较多。那么文件二维码该如何生成呢&#xff1f; 想…

Linux内存地址空间

目录 一、虚拟地址空间 1.虚拟地址空间的定义 2.虚拟地址空间的布局 二、内存壁垒 1.内存壁垒的定义​编辑 2.段错误 三、内存映射的建立与解除 &#xff08;1&#xff09;mmap &#xff08;2&#xff09;munmap &#xff08;3&#xff09;堆内存的分配和释放 1.sbrk …

Android13 设置固定热点ip地址192.168.43.1

Android13 设置固定热点ip地址192.168.43.1 文章目录 Android13 设置固定热点ip地址192.168.43.1一、前言二、设置固定ip地址实现1、Android13 代码中的实现&#xff1a;添加属性写法&#xff1a; 2、Android11 或者更旧的代码中的实现&#xff1a; 三、其他1、Android 代码获连…

Python中学习调试requests模块时出现的大坑(1)

为防止迷路: 学习机械相关,请关注公众号:南大盛联 学习软件,硬件,请关注公众号号:一训微课 cmd模式下 不知道上面这行的话,需要补课。 pip install requests 这个不知道的话,也要补课 pip是python的安装工具。 install是安装的意思 requests是我们需要安装的模…

HTML超链接去下划线

当在HTML中创建超链接时&#xff0c;默认情况下会显示为带有下划线的蓝色文本。如果想要去掉下划线&#xff0c;可以使用CSS样式来实现。 示例代码&#xff1a; <!DOCTYPE html> <html> <head> <style> a {text-decoration: none;color: blue; /* 设…

微信小程序 --- 事件处理

事件处理 一个应用仅仅只有界面展示是不够的&#xff0c;还需要和用户做交互&#xff0c;例如&#xff1a;响应用户的点击、获取用户输入的值等等&#xff0c;在小程序里边&#xff0c;我们就通过编写 JS 脚本文件来处理用户的操作 1. 事件绑定和事件对象 小程序中绑定事件与…

sora会是AGI的拐点么?

©作者|谢国斌 来源|神州问学 OpenAI近期发布的Sora是一个文本到视频的生成模型。这项技术可以根据用户输入的描述性提示生成视频&#xff0c;延伸现有视频的时间&#xff0c;以及从静态图像生成视频。Sora可以创建长达一分钟的高质量视频&#xff0c;展示出对用户提示的精…

PoC免写攻略

在网络安全领域&#xff0c;PoC&#xff08;Proof of Concept&#xff09;起着重要的作用&#xff0c;并且在安全研究、漏洞发现和漏洞利用等方面具有重要的地位。攻击方视角下&#xff0c;常常需要围绕 PoC 做的大量的工作。常常需要从手动测试开始编写 PoC&#xff0c;再到实…

vue项目电商

这个项目功能有首页&#xff0c;分类&#xff0c;商品详情&#xff0c;购物车&#xff0c;用户注册、登录等等的实现&#xff0c;并且可以在手机上进行展示。 git仓库地址&#xff1a;https://gitee.com/BisShen/project.git

应用层http协议包解析与https加密策略解析

文章目录 一.应用层协议--http协议基础认知二.https协议加密策略解析加密策略1--通信双方只使用对称加密加密策略2--通信双方使用单方非对称加密加密策略3--通信双方都使用非对称加密加密策略4--非对称加密与对称加密配合使用中间人攻击数据签名与CA证书HTTPS数据安全认证的本质…

二维码门楼牌管理系统技术服务的分类与应用

文章目录 前言一、二维码门楼牌管理系统的分类二、二维码门楼牌管理系统的应用优势三、结论 前言 随着城市管理的精细化和智能化&#xff0c;二维码门楼牌管理系统成为了现代城市管理的重要工具。该系统将传统的门牌、楼牌、户牌与二维码技术相结合&#xff0c;实现了信息的快…

如何优化一个运行缓慢的SQL查询?有哪些常见的优化技巧?

如何优化一个运行缓慢的SQL查询&#xff1f; 当面对一个运行缓慢的SQL查询时&#xff0c;优化是提升数据库性能的关键步骤。优化查询不仅可以减少查询执行时间&#xff0c;还可以降低系统资源消耗&#xff0c;提高整体的系统吞吐量。以下将详细探讨如何优化一个运行缓慢的SQL查…