linux 搭建mqtt服务

这里采用的是mosquitto

搭建mqtt服务

1.下载mosquitto然后解压

wget http://mosquitto.org/files/source/mosquitto-1.6.7.tar.gz  
tar zxvf osquitto-1.6.7.tar.gz  

2.然后编译安装

make
make install

3.修改配置
目录 /etc/mosquitto
mosquitto.conf 配置文件
aclfile 鉴权控制文件
pwfile 用户名密码文件
mosquitto.conf配置

# =================================================================
# # General configuration
# # =================================================================
#
# # 客户端心跳的间隔时间
#retry_interval 10
#
# # 系统状态的刷新时间
# #sys_interval 10
#
# # 系统资源的回收时间,0表示尽快处理
# #store_clean_interval 10
#
# # 服务进程的PID
# #pid_file /var/run/mosquitto.pid
#
# # 服务进程的系统用户
user root
#
# # 客户端心跳消息的最大并发数
# #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 stdout
#
# # 选择日志的级别(可设置多项)
log_type error
log_type warning
log_type notice
# #log_type information
#
# # 是否记录客户端连接信息
connection_messages true
#
# # 是否记录日志时间
log_timestamp true
#
# # =================================================================
# # Security
# # =================================================================
#
# # 客户端ID的前缀限制,可用于保证安全性
# #clientid_prefixes
#
# # 允许匿名用户
allow_anonymous false
#
# # 用户/密码文件,默认格式:username:password
password_file /etc/mosquitto/pwfile
#
# # PSK格式密码文件,默认格式:identity:key
# #psk_file
#
# # pattern write sensor/%u/data
# # ACL权限配置,常用语法如下:
# # 用户限制:user <username>
# # 话题限制:topic [read|write] <topic>
# # 正则限制:pattern write sensor/%u/data
acl_file /etc/mosquitto/aclfile
#
# # =================================================================
# # 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
#

aclfile

 user spc
  topic read $SYS/#
  topic write $SYS/#
  topic read xxx/#
  topic write xx/# 

read 订阅权限 、write 发布权限、# 通配符表示所有的

最后是pwfile
用命令生成,用户名是userme

mosquitto_passwd -c /etc/mosquitto/pwfile username

最后启动服务

mosquitto -c /etc/mosquitto/mosquitto.conf 

结束服务kill就行。
测试,开启2个终端

参数 描述
-h 服务器主机,默认localhost
-t 指定主题
-u 用户名
-P 密码
-i 客户端id,唯一
-m 发布的消息内容

接收:

mosquitto]# mosquitto_sub -h localhost -t "xxx/#" -u xx-P xxx -i "client1"

发送

mosquitto_pub -h localhost -t "xxx/abc" -u xxx-P xxx-i "client2" -m "hello world“

问题1: Invalid user ‘mosquitto’.
解决 2选 1
(1)修改配置文件:mosquitto.conf ,增加登录的用户,例如当前登录用户为root

(2)执行命令增加当前用户:
adduser mosquitto

问题2 使用过程中找不到libmosquitto.so.1

创建软连接,更新动态库

sudo ln -s /usr/local/lib/libmosquitto.so.1 /usr/lib/libmosquitto.so.1
sudo ldconfig
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值