centos7 :

cd ~

yum install openssl-devel
yum install gcc-c++

yum install libuuid-devel

yum install mysql+±devel.x86_64

yum install libc-ares-dev

websocket 支持

yum install cmake

git clone https://github.com/warmcat/libwebsockets.git
cd libwebsockets/
ls
mkdir build
cd build/
cmake …
make install

创建软连接

ln -s /usr/local/lib/libwebsockets.so.15 /usr/lib/libwebsockets.so.15

ldconfig
// 如果安装有报错这个so
ln -s /usr/lib64/libmysqlclient.so.20 /usr/lib/libmysqlclient.so.20
如果 libmysqlclient.so.20 这个文件没有就复制到lib64下,然后执行上面

find / -name libmysqlclient.so.20
ldconfig -p | grep mysql

ldconfig -p | grep libwebsockets.so*

下载
wget http://mosquitto.org/files/source/mosquitto-1.6.7.tar.gz
解压
tar zxfv mosquitto-1.6.7.tar.gz

cd mosquitto-1.6.7

如果需要开启websocket就在源码目录下的config.mk 修改
WITH_WEBSOCKETS:=yes

编译
make

编译过程如果找不到ares.h
sudo yum install c-ares-devel
编译过程中如果找不到libwebsockets.h
sudo yum -y install libwebsockets-devel.x86_64

安装
sudo make install

mosquitto.conf文件加上

listener 9001
protocol websockets

使用过程中找不到libmosquitto.so.1
error while loading shared libraries: libmosquitto.so.1: cannot open shared object file: No such file or directory
【解决方法】——修改libmosquitto.so位置
创建链接

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

更新动态链接库

sudo ldconfig

到这里就安装完成了

异常: Invalid user ‘mosquitto’.
修改配置文件:mosquitto.conf ,增加登录的用户,例如当前登录用户为root
或者添加用户 mosquitto

启动测试start------------------------------------------

启动代理服务
第一个终端中输入如下命令:

//如果没有配置 mosquitto.conf 则执行下面这句启动
mosquitto -v

//如果有配置 mosquitto.conf 则执行下面这句启动
mosquitto -v -c /etc/mosquitto/mosquitto.conf -d

-c 后面跟的是启动mosquitto可以调整的参数,比如是否开启基本认证,端口是什么,SSL单向和双向的认证配置等等。
-d 表示MQTT mosquitto将在后台运行。
-p 代表当前的mosquitto服务实例启动以后,其监听端口号,这个配置的覆盖[-c config file] 指定的配置文件中的端口
-v 代码调试模式(verbose)可以输出更多的信息

订阅主题
在第二个终端中输入如下命令:

mosquitto_sub -v -t sensor

【-t】指定主题,此处为sensor
【-v】打印更多的调试信息

发布内容
在第三个终端中输入如下命令:

mosquitto_pub -t sensor -m 12

【-t】指定主题
【-m】指定消息内容

执行完上面这句即可在第二个终端收到发布的信息

启动测试end--------------------------------------------------------------

重启操作:
先杀再启动
ps -aux | grep mosquitto
kill -s 9 pid

mosquitto -c /etc/mosquitto/mosquitto.conf -d

权限配置
https://www.cnblogs.com/yueli/p/7486043.html
增加权限配置

打开配置文件 aclfile.example 复制为 aclfile 在其中添加如下配置信息。

user mqttread
topic read root/topic/#
user mqttwrite
topic write root/topic/#

修改 Mosquitto.conf 配置选项

打开mosquitto.conf文件,找到acl_file节点。打开配置做如下修改:
    修改前:#acl_file
    修改后:acl_file /etc/mosquitto/aclfile 根据自己文件实际位置填写

添加对应用户 mqttread 此用户只能读相应top
mosquitto_passwd -c /etc/mosquitto/pwfile mqttread
然后输入密码

添加对应用户 mqttwrite此用户只能写相应top
mosquitto_passwd /etc/mosquitto/pwfile mqttwrite
然后输入密码

一些其它需要注意:

Qos(1);//0 至多一次 1 至少一次 2 只有一次

MQTT的文档中,我们只注意到了设备ID需要在1~23位之间,却并没有注意到字符的限制。最初生成的id是base64的编码。在后面的测试中 ,总是发现推送到某些设备之后推送就断开了。经过检查发现,这是由于一些设备id中存在+符号导致的。
在Topic中,+和#会被当作通配符处理,导致出现 Socket error 的错误

RETAIN(保持)
仅针对PUBLISH消息。不同值,不同含义:

1:表示发送的消息需要一直持久保存(不受服务器重启影响),不但要发送给当前的订阅者,并且以后新来的订阅了此Topic name的订阅者会马上得到推送。

备注:新来乍到的订阅者,只会取出最新的一个RETAIN flag = 1的消息推送。

0:仅仅为当前订阅者推送此消息。

假如服务器收到一个空消息体(zero-length payload)、RETAIN = 1、已存在Topic name的PUBLISH消息,服务器可以删除掉对应的已被持久化的PUBLISH消息。

消息可持久化

是否可根据clientid筛选用户发送信息

topic 数量限制?

修改mosquitto的编译配置文件:config.mk,打开如下配置项(去掉该配置项前面的注释符号#):

WITH_SYS_TREE:=yes

然后重新编译mosquitto即可
(2)修改mosquitto的配置文件mosquitto.conf里的配置项:sys_interval,该项表示系统消息的发布时间间隔(单位:秒),需将该值设置为大于0,否则视为禁用;【在启动mosquito的时候需要显示制定这里修改过的配置文件:mosquitto.conf,例如使用启动命令:./mosquitto -c mosquitto.conf,否则如果不指定任何配置文件,例如使用启动命令:./mosquitto,就会使用默认配置项,即:禁用该功能】

sys_interval 180

websocket
桥接
都需要改了后重新编译
WITH_WEBSOCKETS:=yes

WITH_SRV:=yes

查看当前连接
netstat -an|grep :1883

然后要创建mqtt 用户和密码,密码可以用mosquitto-auth-plug 里面的np 创建,实际上是用PKCS5_PBKDF2_HMAC,算法采用sha256. 然后对结果进行base64编码转成字符串。如果将来要做后台管理界面,就后台自己计算

Mqtt服务的卸载:
查找mqtt服务文件:whereis mosquitto
删除已安装的mqtt文件即可
mqtt服务配置文件 文件夹/etc/mosquitto
mqtt命令文件 /usr/local/sbin/mosquitto 相关mosquitto mosquitto_sub mosquitto_pub mosquitto_passwd
删除以上所有相关的文件

删掉源码包,重新解压

Error: Unable to create websockets listener on port 9001.

ldconfig -p | grep libwebsockets.so*
删掉原来的libwebsockets.so所有指向什么的
然后再重新编译libwebsockets 走安装 libwebsockets的流程
再去重新解压编译mosquitto(要把websocket开关打开)
再次启动一般就可以了

mosquitto 安装 centos7相关推荐

  1. VMware14安装CentOS7的详细教程

    本篇文章主要介绍了VMware安装Centos7超详细过程(图文),具有一定的参考价值,感兴趣的小伙伴们可以参考一下 1.软硬件准备 软件:推荐使用VMwear,我用的是VMwear 12 镜像:Ce ...

  2. Linux安装CentOS7(图文详解)

    Linux安装centos7 准备 软件:VMware workstation 镜像文件:CentOS-7-x86_64-Minimal-1810.iso 一.安装centos7 1.点击创建新的虚拟 ...

  3. VMware中安装CentOS7网络配置静态IP地址,常用配置和工具安装

    VMware中安装CentOS7网络配置静态IP地址,常用配置和工具安装 在阿里云开源镜像地址下载镜像 Index of /centos/7.2.1511/isos/x86_64/ http://mi ...

  4. U盘安装Centos7.0图解

    用U盘安装Centos7.0 工具/原料 centos 7.0 64位系统:CentOS-7.0-1406-x86_64-DVD.iso ultraiso 一个至少8G的U盘 方法/步骤 1.先使用u ...

  5. 【Linux】在虚拟机上安装CentOS7

    在配置好的机子上,可以装个双系统,但是在我自己的本子上,磁盘读写太垃圾了,连压缩卷 都执行不了,分不出空间,装不了CentOS系统,没办法,采用虚拟机的方式,把它转起来. -------------- ...

  6. Linux入门!Linux无法联网解决办法!CentOS7、VMPlayer、VMWareWorkstation16资源!VMWareWorkstation16序列号!VMware安装Centos7!

    Linux入门!CentOS7.VMPlayer.VMWareWorkstation16资源!VMWareWorkstation16序列号!Linux无法联网解决办法!VMware安装Centos7! ...

  7. Vmware 安装CentOS7时连不上网问题的解决

    Vmware 安装CentOS7时连不上网问题的解决 参考文章: (1)Vmware 安装CentOS7时连不上网问题的解决 (2)https://www.cnblogs.com/yaomajor/p ...

  8. VMware虚拟机安装Centos7

    首先这里我们需要用到本次安装的VMware软件,这里采用的是VMware15.0.0 以及Centos7.2(1511) VMware注册码:链接:https://pan.baidu.com/s/1j ...

  9. docker 安装centos7并SSH远程连接

    1.安装centos7 镜像 1.搜索并拉取centos镜像(默认最新镜像)docker search centosdocker pull centos2.建立本机对应docker-centos76 ...

最新文章

  1. 《LeetCode力扣练习》第39题 组合总和 Java
  2. python代码覆盖率测试_利用coverage工具进行Python代码覆盖率测试
  3. kafka和storm集成_Storm和Kafka集成的重要生产错误和修复
  4. 问题:org.apache.dubbo.remoting.TimeoutException
  5. 大数据学习系列----大数据项目的思考
  6. word把选择答案弄到题目里_一个极限案例弄明白为何“看答案都明白,做题目就是想不起来”...
  7. C/C++使用strcpy报错解决方案
  8. 概要设计 英文_JavaScript 中的位运算和权限设计
  9. python爬虫,短短25行代码批量下载豆瓣妹子图片
  10. oppo X907刷机包 COLOROS 1.0 正式版公布 安卓4.2.2
  11. 搭建Maven私服Nexus
  12. 首旅如家蝉联世界酒店集团10强,中高端酒店开业超1000家
  13. YOLOv7来临:论文解读附代码解析
  14. 从方法到实践,银行如何搭建用户体验管理体系?
  15. Eclipse插件安装最简单方式--以Eclipse中文语言包汉化为例(附汉化包)
  16. pip版本更新的问题
  17. python计算歌手得分
  18. 17、python数据列之间的简单计算(加减乘除)
  19. 【特征检测】LIOP特征描述算法
  20. php 表单 与数据库查询

热门文章

  1. 用大数据分析预测五组大乐透的开奖号码
  2. HDFS(一)HDFS基本介绍
  3. 全数字转全模拟+数字的完美IC-CV2880留个记录
  4. sentinel 整合dubbo限流
  5. Java jar war ear 包区别
  6. 红客是什么呢?零基础如何成为红客!
  7. 论:MongoDB的好坏丑
  8. [原创]大部调整的IT遐想
  9. 读书笔记22:Optical Flow Guided Feature: A Fast and Robust Motion Representation for Video Action Recogni
  10. 喜讯!华秋电子荣获千峰奖“2022年度产业互联网百强”,持续为电子产业增效降本!