mqtt mosquitto 源码安装
下载地址
ububtu :
wget https://codeload.github.com/eclipse/mosquitto/zip/master
安装依赖
sudo apt-get install openssl sudo apt-get install libssl-dev sudo apt-get install openssl sudo apt-get install uuid-dev sudo apt-get install docbook-xsl
新建用户
Useradd mosquitto
Passwd mosquitto
切换目录/修改配置文件
cd /etc/mosquitto/
Sudo mv mosquitto.conf.example mosquitto.conf
测试
mosquitto_sub -t "mqtt" mosquitto_pub -h 47.100.210.119 -t "mqtt" -m "test"
订阅/发布参数说明
mosquitto_pub 命令参数说明 1. -d 打印debug信息 2. -f 将指定文件的内容作为发送消息的内容 3. -h 指定要连接的域名 默认为localhost 4. -i 指定要给哪个clientId的用户发送消息 5. -I 指定给哪个clientId前缀的用户发送消息 6. -m 消息内容 7. -n 发送一个空(null)消息 8. -p 连接端口号 9. -q 指定QoS的值(0,1,2) 10. -t 指定topic 11. -u 指定broker访问用户 12. -P 指定broker访问密码 13. -V 指定MQTT协议版本 14. --will-payload 指定一个消息,该消息当客户端与broker意外断开连接时发出。该参数需要与--will-topic一起使用 15. --will-qos Will的QoS值。该参数需要与--will-topic一起使用 16. --will-retain 指定Will消息被当做一个retain消息(即消息被广播后,该消息被保留起来)。该参数需要与--will-topic一起使用 17. --will-topic 用户发送Will消息的topic mosquitto_sub 命令参数说明 1. -c 设定‘clean session’为无效状态,这样一直保持订阅状态,即便是已经失去连接,如果再次连接仍旧能够接收的断开期间发送的消息。 2. -d 打印debug信息 3. -h 指定要连接的域名 默认为localhost 4. -i 指定clientId 5. -I 指定clientId前缀 6. -k keepalive 每隔一段时间,发PING消息通知broker,仍处于连接状态。 默认为60秒。 7. -q 指定希望接收到QoS为什么的消息 默认QoS为0 8. -R 不显示陈旧的消息 9. -t 订阅topic 10. -v 打印消息 11. --will-payload 指定一个消息,该消息当客户端与broker意外断开连接时发出。该参数需要与--will-topic一起使用 12. --will-qos Will的QoS值。该参数需要与--will-topic一起使用 13. --will-retain 指定Will消息被当做一个retain消息(即消息被广播后,该消息被保留起来)。该参数需要与--will-topic一起使用 14. --will-topic 用户发送Will消息的topic
配置文件详情
.# ================================================================= .# 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
测试