必备库和工具:gcc gcc-c++ openssl-devel c-ares-devel libuuid-devel wget cmake。(centOS用的在线安装工具是yum,而非apt-get) 安装源码:mosquitto-1.4.11.tar.gz 安装过程: 1、下载mqtt,我用的是 mosquitto-1.4.11.tar.gz, 解压缩:# tar zxfv mosquitto-1.4.11.tar.gz 2、修改config.mk文件以使后面编译的mosquitto文件支持websocket。

cd /mosquitto-1.4.11

找到mosquitto-1.4.11目录下的config.mk文件, 把config.mk 文件中的 WITH_WEBSOCKETS:=no 改为yes 3、保存后,执行

make && make install

ln -s /usr/local/lib/libwebsockets.so.6 /usr/lib64/libwebsockets.so.6

groupadd mosquitto

useradd -g mosquitto mosquitto

4、创建mosquitto.conf、pwfile文件

cd /etc/mosquitto/

如果该目录下没有mosquitto.conf 和 pwfile,5、执行

cp mosquitto.conf.example mosquitto.conf

cp pwfile.example pwfile

然后修改 文件mosquitto.conf , 并在文件最后加入 6、启动 mqtt

mosquitto -c /etc/mosquitto/mosquitto.conf

###################################### mosquitto.conf配置文件解析

=================================================================

General configuration

=================================================================

客户端心跳的间隔时间

#retry_interval 20

系统状态的刷新时间

#sys_interval 10

系统资源的回收时间,0表示尽快处理

#store_clean_interval 10

服务进程的PID

#pid_file /var/run/mosquitto.pid

服务进程的系统用户

#user mosquitto

客户端心跳消息的最大并发数

#max_inflight_messages 10

客户端心跳消息缓存队列

#max_queued_messages 100

用于设置客户端长连接的过期时间,默认永不过期

#persistent_client_expiration

=================================================================

Default listener

=================================================================

服务绑定的IP地址

#bind_address

服务绑定的端口号

#port 1883

允许的最大连接数,-1表示没有限制

#max_connections -1

cafile:CA证书文件

capath:CA证书目录

certfile:PEM证书文件

keyfile:PEM密钥文件

#cafile #capath #certfile #keyfile

必须提供证书以保证数据安全性

#require_certificate false

若require_certificate值为true,use_identity_as_username也必须为true

#use_identity_as_username false

启用PSK(Pre-shared-key)支持

#psk_hint

SSL/TSL加密算法,可以使用“openssl ciphers”命令获取

as the output of that command.

#ciphers

=================================================================

Persistence

=================================================================

消息自动保存的间隔时间

#autosave_interval 1800

消息自动保存功能的开关

#autosave_on_changes false

持久化功能的开关

persistence true

持久化DB文件

#persistence_file mosquitto.db

持久化DB文件目录

#persistence_location /var/lib/mosquitto/

=================================================================

Logging

=================================================================

4种日志模式:stdout、stderr、syslog、topic

none 则表示不记日志,此配置可以提升些许性能

log_dest none

选择日志的级别(可设置多项)

#log_type error #log_type warning #log_type notice #log_type information

是否记录客户端连接信息

#connection_messages true

是否记录日志时间

#log_timestamp true

=================================================================

Security

=================================================================

客户端ID的前缀限制,可用于保证安全性

#clientid_prefixes

允许匿名用户

#allow_anonymous true

用户/密码文件,默认格式:username:password

#password_file

PSK格式密码文件,默认格式:identity:key

#psk_file

pattern write sensor/%u/data

ACL权限配置,常用语法如下:

用户限制:user

话题限制:topic [read|write]

正则限制:pattern write sensor/%u/data

#acl_file

=================================================================

Bridges

=================================================================

允许服务之间使用“桥接”模式(可用于分布式部署)

#connection #address [: ] #topic [[[out | in | both] qos-level] local-prefix remote-prefix]

设置桥接的客户端ID

#clientid

桥接断开时,是否清除远程服务器中的消息

#cleansession false

是否发布桥接的状态信息

#notifications true

设置桥接模式下,消息将会发布到的话题地址

$SYS/broker/connection/ /state

#notification_topic

设置桥接的keepalive数值

#keepalive_interval 60

桥接模式,目前有三种:automatic、lazy、once

#start_type automatic

桥接模式automatic的超时时间

#restart_timeout 30

桥接模式lazy的超时时间

#idle_timeout 60

桥接客户端的用户名

#username

桥接客户端的密码

#password

bridge_cafile:桥接客户端的CA证书文件

bridge_capath:桥接客户端的CA证书目录

bridge_certfile:桥接客户端的PEM证书文件

bridge_keyfile:桥接客户端的PEM密钥文件

#bridge_cafile #bridge_capath #bridge_certfile #bridge_keyfile

自己的配置可以放到以下目录中

include_dir /etc/mosquitto/conf.d

出现的问题: (1)没有arec.h sudo yum install c-ares-devel (2)没有uuid.h sudo yum install e2fsprogs-devel sudo yum install uuid-devel sudo yum install libuuid-devel (3)使用过程中找不到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

CentOS服务器上部署mqtt的更多相关文章

  1. ios – OSX上的AWS MQTT

    解决方法由于SSL握手问题,它是失败的.它正在检测到一个无效的证书.报告和解决了类似的问题here,引用相同的错误代码.由于p12文件中有多个身份,该问题被追溯到身份不匹配.在这种情况下,p12文件中有两个证书,但代码只读取第一个.我建议倾销.p12文件的内容,并确认证书.发布在这里审查.

  2. ios – 从Swift重写一个Obj-C类方法,返回NSArray

    .要在Swift子类中指定可选或具体值,请使用Objective-Cnullability说明符:exampleMethod;桥接以覆盖类funcexampleMethod()–>[AnyObject]exampleMethod;桥接以覆盖类funcexampleMethod()–>[AnyObject]?exampleMethod;和exampleMethod;具有相同的行为并桥接到隐式解包的可选项.

  3. 开始使用 swift 的 c语言 库

    为了手头上的一个项目,我需要使用CommonCrypto库中的HMAC函数.虽然苹果在swift中已经提供了许多系统库,但是CommonCrypto不在其中.庆幸的是,要使用这个库并不怎么费事,只需要做一点额外的工作.开始访问库在使用库之前,我们需要通知Swift编译器.要完成这个过程,我们有两种方式.它们都能在示例工程中正常运行,但是你应该根据你代码的用途来选择具体的方式.好消息是,你随便使用那

  4. Swift 与 Object-C 交互 Swift版本为:1.2

    一个是Swift项目调用Object-C的类,另一个是Object-C项目调用Swift类。我们的结构目录变成这样,我这里新建的桥接文件名为“SwiftCallObject-C-Bridging-Header.h”。如果你是第在Object-C项目里第一次创建Swift的类,那么依旧会有窗口提示,询问你是否需要创建桥接文件。这里先说明一下,在Object-C中调用Swift时,Xcode会帮助我们自动生成头文件,不需要我们去维护。谨记,在Object-C调用Swift端代码时,Swift类的class前需

  5. Swift和OC混用

    记得去年在北京一家公司的时候就使用了swift和OC混编。在这里想写一下swift和OC混用的一些简单使用方法,如果有错误请批评指正.在一个应用的target中导入一些Objective-C文件供Swift代码使用时,你需要依赖于Objective-C的桥接头文件来暴露给Swift。当你添加Swift文件到现有的Objective-C应用(或反之)时,Xcode会自动创建这些头文件。在这个桥接头文件中列出的所有public的Objective-C头文件都会对Swift可见。用Swift语法使用这些Obje

  6. swift开发

    [myTableViewinsertSubview:mySubviewatIndex:2在Swift中如下调用。在Objective-C中的指针在导入Swift时被映射为Swift语言的optional类型。importUIKitclassMySwiftViewControllerUIViewController{//definetheclass}如下定义了一个采用Objective-C中的UITableViewDelegate和UITableViewDataSource协议的Swift类MySwiftV

  7. Swift和OC文件间的相互调用

    公共文件/桥接的方法2016/1/2613:33Swift使用OC文件方法看完上面内容之后,你只需要这么做,swift就能使用OC的类了注意这里是搜索bridging注意这里是搜索bridgingOC使用Swift文件方法在你需要使用的文件中导入头文件#import"-Swift.h"如果不行,创建一个桥接文件就行,桥接文件内不写任何代码.Xcode路径要填#

  8. swift 与oc 混编

    生成一个桥接文件Swift_Objc-Bridging-Header.h,这个文件在swift调用oc时学要用到。在viewController,中引入Swift_Objc-Swift.h文件,即可用oc语言使用swift类ViewController.h文件中调用代码:swift调用oc:在Swift_Objc-Bridging-Header.h文件中引入.h头文件,即可用swift语言调用oc类。

  9. oc 和swift 混编之--准备工作

    之前的一段时间在学习swift,觉得可以出师了,哈哈哈,遂打算把oc和swift混编起来,混起来才发现远远比想象的要复杂。因为当前正在做的项目是用oc写的,也不打算用swift重新写一遍,所以直接在当前项目里加入swift代码,这当然是允许的,不过在此之前要做一些准备工作。也很简单,在你需要使用的那个类里边,import这样一个文件“项目名-Swift.h”:8E2FD4C0-4DF2-4A1B-BB66-9F0D43E5BF35.png这样oc就可以访问swift了。

  10. Swift与OC混合使用

    Swift中调用OC文件如果你是在原有的Swift项目中创建OC文件,那么Xcode将自动进行提示,询问你是否要建立一个桥接,然后选择是。如果是在Swift中引入一个OC文件的话,而之前你项目中又不存在这个桥接文件,那么你就要手动创建一个。OC文件调用Swift如果你的OC文件或者项目中需要用的Swift中的类,但是Swift中又不提供头文件怎么办,没关系,只需要在OC文件中引入”项目名-Swift.h“,即可成功调用。,如下图

随机推荐

  1. 在airgapped(离线)CentOS 6系统上安装yum软件包

    我有一个CentOS6系统,出于安全考虑,它已经被空气泄漏.它可能从未连接到互联网,如果有,它很长时间没有更新.我想将所有.rpm软件包放在一个驱动器上,这样它们就可以脱机安装而无需查询互联网.但是,我在测试VM上遇到的问题是,即使指定了本地路径,yum仍然会挂起并尝试从在线存储库进行更新.另外,有没有办法使用yum-utils/yumdownloader轻松获取该包的所有依赖项和所有依赖项?目前

  2. centos – 命名在日志旋转后停止记录到rsyslog

    CentOS6.2,绑定9.7.3,rsyslog4.6.2我最近设置了一个服务器,我注意到在日志轮换后,named已停止记录到/var/log/messages.我认为这很奇怪,因为所有日志记录都是通过rsyslog进行的,并且named不会直接写入日志文件.这更奇怪,因为我在更新区域文件后命名了HUPed,但它仍然没有记录.在我停止并重新启动命名后,记录恢复.这里发生了什么?

  3. centos – 显示错误的磁盘大小

    对于其中一个磁盘,Df-h在我的服务器上显示错误的空白区域:Cpanel表明它只有34GB免费,但还有更多.几分钟前,我删除了超过80GB的日志文件.所以,我确信它完全错了.fdisk-l/dev/sda2也显示错误:如果没有格式化,我该怎么做才能解决这个问题?并且打开文件描述符就是它需要使用才能做到这一点.所以…使用“lsof”并查找已删除的文件.重新启动写入日志文件的服务,你很可能会看到空间可用.

  4. 如何在centos 6.9上安装docker-ce 17?

    我目前正在尝试在centOS6.9服务器上安装docker-ce17,但是,当运行yuminstalldocker-ce时,我收到以下错误:如果我用跳过的标志运行它我仍然得到相同的消息,有没有人知道这方面的方法?

  5. centos – 闲置工作站的异常负载平均值

    我有一个新的工作站,具有不寻常的高负载平均值.机器规格是:>至强cpu>256GB的RAM>4x512GBSSD连接到LSI2108RAID控制器我从livecd安装了CentOS6.564位,配置了分区,网络,用户/组,并安装了一些软件,如开发工具和MATLAB.在启动几分钟后,工作站负载平均值的值介于0.5到0.9之间.但它没有做任何事情.因此我无法理解为什么负载平均值如此之高.你能帮我诊断一下这个问题吗?

  6. centos – Cryptsetup luks – 检查内核是否支持aes-xts-plain64密码

    我在CentOS5上使用cryptsetupluks加密加密了一堆硬盘.一切都很好,直到我将系统升级到CentOS6.现在我再也无法安装磁盘了.使用我的关键短语装载:我收到此错误:在/var/log/messages中:有关如何装载的任何想法?找到解决方案问题是驱动器使用大约512个字符长的交互式关键短语加密.出于某种原因,CentOS6中的新内核模块在由旧版本创建时无法正确读取512个字符的加密密钥.似乎只会影响内核或cryptsetup的不同版本,因为在同一系统上创建和打开时,512字符的密钥将起作用

  7. centos – 大量ssh登录尝试

    22个我今天登录CentOS盒找到以下内容这是过去3天内的11次登录尝试.WTF?请注意,这是我从我的提供商处获得的全新IP,该盒子是全新的.我还没有发布任何关于此框的内容.为什么我会进行如此大量的登录尝试?是某种IP/端口扫描?基本上有4名匪徒,其中2名来自中国,1名来自香港,1名来自Verizon.这只发生在SSH上.HTTP上没有问题.我应该将罪魁祸首子网路由吗?你们有什么建议?

  8. centos – kswap使用100%的CPU,即使有100GB的RAM也可用

    >Linux内核是否应该足够智能,只需从内存中清除旧缓存页而不是启动kswap?

  9. centos – Azure将VM从A2 / 3调整为DS2 v2

    我正在尝试调整前一段时间创建的几个AzureVM,从基本的A3和标准A3到标准的DS2v2.我似乎没有能力调整到这个大小的VM.必须从头开始重建服务器会有点痛苦.如果它有所不同我在VM中运行CentOS,每个都有一个带有应用程序和操作系统的磁盘.任何人都可以告诉我是否可以在不删除磁盘的情况下删除VM,创建新VM然后将磁盘附加到新VM?

  10. centos – 广泛使用RAM时服务器计算速度减慢

    我在非常具体的情况下遇到服务器速度下降的问题.事实是:>1)我使用计算应用WRF>2)我使用双XeonE5-2620v3和128GBRAM(NUMA架构–可能与问题有关!

返回
顶部