CentOS服务器上部署mqtt

时间:2024-03-23 19:02:42

必备库和工具: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 CentOS服务器上部署mqtt 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 CentOS服务器上部署mqtt , 5、执行

cp mosquitto.conf.example mosquitto.conf

cp pwfile.example pwfile

然后修改 文件mosquitto.conf , CentOS服务器上部署mqtt 并在文件最后加入 CentOS服务器上部署mqtt 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 <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

转载于:https://my.oschina.net/u/241110/blog/846460