#安装
## 下载源代码包
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