mqtt(mosquitto)安装

#安装

## 下载源代码包

wget http://mosquitto.org/files/source/mosquitto-1.5.tar.gz

## 解压

tar zxfv mosquitto-1.5.tar.gz

## 进入目录

cd mosquitto-1.5

## 编译

make

## 安装

sudo make install

 

#安装及使用过程的错误

##编译找不到openssl/ssl.h

sudo apt-get install libssl-dev

##编译过程找不到ares.h

sudo apt-get install libc-ares-dev

##编译过程找不到uuid/uuid.h

sudo apt-get install uuid-dev

##使用过程中找不到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(然后重启)
————————————————
 

配置文件在   mosquitto -c /etc/mosquitto/(这里面的mosquitto.conf.example 是个默认模板,要修改的话就复制一个出来为mosquitto.conf  然后如果要改端口的话就把#port 1883后重启mosquitto -c /etc/mosquitto/mosquitto.conf(注意这里要是输入mosquitto 的话默认还是开启1883的配置,得指向配置文件到上面新的路径去)) 

#简单测试

一个完整的MQTT示例包括一个代理器,一个发布者和一个订阅者。测试分为以下几个步骤:

注:在本次测试中,发布者、代理和订阅者均在一台主机上,启用3个终端窗口完成测试。

##启动服务mosquitto。

mosquitto -v

正常运行输出信息:
mosquitto -v
1510234629: mosquitto version 1.4.5 (build date 2017-11-09 19:35:31+0800) starting
1510234629: Using default config.
1510234629: Opening ipv4 listen socket on port 1883.
1510234629: Opening ipv6 listen socket on port 1883.
————————————————

【-v】打印更多的调试信息

##订阅者通过mosquitto_sub订阅指定主题的消息。

mosquitto_sub -v -t test

【-t】指定主题,此处为test【-v】打印更多的调试信息

##发布者通过mosquitto_pub发布指定主题的消息。

mosquitto_pub -t test -m hello

【-t】指定主题 【-m】指定消息内容

##代理服务器把该主题的消息推送到订阅者。


 

#mosquitto_pub 用法详解

用法:
mosquitto_pub [-d] [-h hostname] [-i client_id] [-I client id prefix] [-p port number] [-q message QoS] [–quiet] [-r] { -f file | -l | -m message | -n | -s} [-u username [-P password] ] [ –will-topic topic [–will-payload payload] [–will-qos qos] [–will-retain] ] -t message-topic
选项:
-d, –debug
开启debug选项
-f, –file
把一个文件的内容做为消息的内容发送。经测试,支持txt文件,不支持doc等其他形式文件。
-h, –host
说明所连接到的域名,默认是localhost
-i, –id
客户端的ID号,如果没有指定,默认是mosquitto_pub_加上客户端的进程id,不能和–id_prefix同时使用。
-I, –id-prefix
指定客户端ID的前缀,与客户端的进程ID连接组成客户端的ID,不能喝–id同时使用。
-l, –stdin-line
从总段读取输入发送消息,一行为一条消息,空白行不会被发送。
-m, –message
从命令行发送一条消息,-m后面跟发送的消息内容。
-n, –null-message
发送一条空消息。
-p, –port
连接的端口号,默认是1883.
-P, –pw
指定密码用于代理认证,使用此选项时必须有有效的用户名。
-q, –qos
指定消息的服务质量,可以为0,1,2,默认是0.
–quiet
如果指定该选项,则不会有任何错误被打印,当然,这排除了无效的用户输入所引起的错误消息。
-r, –retain
如果指定该选项,该条消息将被保留做为最后一条收到的消息。下一个订阅消息者将能至少收到该条消息。
-s, –stdin-file
从标准输入接收传输的消息内容,所有输入做为一条消息发送。
-t, –topic
指定消息所发布到哪个主题。
-u, –username
指定用户名用于代理认证。
–will-payload
如果指定该选项,则万一客户端意外和代理服务器断开,则该消息将被保留在服务端并发送出去,该选项必须同时用–will-topic指定主题。
–will-qos
指定Will的服务质量,默认是0.必须和选项 –will-topic同时使用.
–will-retain
如果指定该选项,则万一客户端意外断开,已被发送的消息将被当做retained消息。必须和选项 –will-topic同时使用.
–will-topic
指定客户端意外断开时,Will消息发送到的主题。

 

#mosquitto_sub 用法详解

用法:
mosquitto_sub [-c] [-d] [-h hostname] [-i client_id] [-I client id prefix] [-k keepalive time] [-p port number] [-q message QoS] [–quiet] [-v] [ -u username [-Ppassword] ] [ –will-topic topic [–will-payload payload] [–will-qos qos] [–will-retain] ] -t message topic …
选项:
-c, –disable-clean-session
禁止’clean session’选项,即如果客户端断开连接,这个订阅仍然保留来接收随后到的QoS为1和2的消息,当改客户端重新连接之后,它将接收到已排在队列中的消息。建议使用此选项时,客户端id选项设为–id
If using this option, it is recommended that the client id is set manually with –id
-d, –debug
开启debug选项
-h, –host
说明所连接到的域名,默认是localhost
-i, –id
客户端的ID号,如果没有指定,默认是mosquitto_pub_加上客户端的进程id,不能和–id_prefix同时使用。
-I, –id-prefix
指定客户端ID的前缀,与客户端的进程ID连接组成客户端的ID,不能喝–id同时使用。
-k, –keepalive
给代理发送PING命令(目的在于告知代理该客户端连接保持且在正常工作)的间隔时间,默认是60s
-p, –port
说明客户端连接到的端口,默认是1883
-P, –pw
指定密码用于代理认证,使用此选项时必须有有效的用户名。
-q, –qos
指定消息的服务质量,可以为0,1,2,默认是0.
–quiet
如果指定该选项,则不会有任何错误被打印,当然,这排除了无效的用户输入所引起的错误消息。
-t, –topic
指定订阅的消息主题,允许同时订阅到多个主题
-u, –username
指定用户名用于代理认证。
-v, –verbose
冗长地打印收到的消息。若指定该选项,打印消息时前面会打印主题名——“主题 消息内容”,否则,只打印消息内容
–will-payload
如果指定该选项,则万一客户端意外和代理服务器断开,则该消息将被保留在服务端并发送出去,该选项必须同时用–will-topic指定主题。
–will-qos
指定Will的服务质量,默认是0.必须和选项 –will-topic同时使用.
–will-retain
如果指定该选项,则万一客户端意外断开,已被发送的消息将被当做retained消息。必须和选项 –will-topic同时使用.
–will-topic
指定客户端意外断开时,Will消息发送到的主题。

 

#mosquitto 用户配置

mosquitto中可以添加多个用户,只有使用用户名和密码才能登陆服务器进行订阅与发布操作。可以说用户机制是mosquitto重要的安全机制,增强服务器的安全性。

##添加用户步骤

1.打开mosquitto.conf文件,找到allow_anonymous节点,这个节点作用是,是否开启匿名用户登录,默认是true,改为false。

allow_anonymous false

2.找到password_file节点,这个节点是告诉服务器你要配置的用户将存放在哪里。打开此配置并指定pwfile.example文件路劲(注意是绝对路劲)

password_file /etc/mosquitto/pwfile.example

3.创建用户名和密码、打开命令窗口 键入如下命令:

sudo mosquitto_passwd /etc/mosquitto/pwfile.example mosquitto

提示连续两次输入密码、创建成功。/etc/mosquitto/pwfile.example 是将用户创建到 pwfile.example文件中、mosquitto是用户名。

 

 

##配置mosquitto 配置文件

###进入配置文件

sudo vim /etc/mosquitto/mosquitto.conf

###找到 Default listener,在该栏下进行端口配置

###再找到Certificate based SSL/TLS support字段,进行白色字体的配置。

##重启服务

mosquitto -c /etc/mosquitto/mosquitto.conf

##验证

###终端一订阅

 mosquitto_sub -h 192.168.8.19 -p 8883 -u mosquitto -P 123456 --cafile ./ca.crt -t test
###终端二发布

mosquitto_pub -h 192.168.8.19 -p 8883 -u mosquitto -P 123456 --cafile ./ca.crt -t test -m hello
————————————————
版权声明:本文为CSDN博主「键盘上的精灵」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yangkunpengD/article/details/87367128

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读