CentOS服务器上部署mqtt

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

cd /mosquitto-1.4.11

找到mosquitto-1.4.11目录下的config.mk文件, 把config.mk 文件中的 WITH_WEBSOCKETS:=no 改成yes 输入图片说明 三、保存后,执行web

make && make install

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

groupadd mosquitto

useradd -g mosquitto mosquitto

四、建立mosquitto.conf、pwfile文件算法

cd /etc/mosquitto/

若是该目录下没有mosquitto.conf 和 pwfile 输入图片说明 , 五、执行缓存

cp mosquitto.conf.example mosquitto.conf

cp pwfile.example pwfile

而后修改 文件mosquitto.conf , 输入图片说明 并在文件最后加入 输入图片说明 六、启动 mqtt安全

mosquitto -c /etc/mosquitto/mosquitto.conf

###################################### mosquitto.conf配置文件解析服务器

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

General configuration

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

客户端心跳的间隔时间

#retry_interval 20websocket

系统状态的刷新时间

#sys_interval 10session

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

#store_clean_interval 10并发

服务进程的PID

#pid_file /var/run/mosquitto.pidsocket

服务进程的系统用户

#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 <username>

话题限制:topic [read|write] <topic>

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

#acl_file

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

Bridges

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

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

#connection <name> #address <host>[:<port>] #topic <topic> [[[out | in | both] qos-level] local-prefix remote-prefix]

设置桥接的客户端ID

#clientid

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

#cleansession false

是否发布桥接的状态信息

#notifications true

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

$SYS/broker/connection/<clientid>/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

相关文章
相关标签/搜索