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,210. -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
测试
原文地址:https://www.cnblogs.com/tsxylhs/p/10043834.html