2023.09.27
主要说明在ubuntu18.04下如何部署mosquitto,以及mosquitto的具体使用。本笔记不对虚拟机和ubuntu安装进行展开,可直接看下面的参考链接
参考链接
-
安装VMware环境 VMware 17 下载安装及永久激活使用教程 - 嘿笨笨熊 - 博客园 (cnblogs.com)
-
Ubuntu安装:VMware虚拟机安装Ubuntu(超详细图文教程)_vmware fusion安装ubuntu-CSDN博客
-
Ubuntu 18.04安装测试MQTT Mosquitto_test.mosquitto.org_酸梅果茶的博客-CSDN博客
推荐也可以看[官网]([Eclipse Mosquitto),对于官网部分英文不好看懂的可以参考这个链接Mosquitto 配置登录 - ioufev - 博客园 (cnblogs.com),博主基本上关于mosquitto的博客有翻译官方文档
安装VS Code
使用VC看文档和代码比较合理方便,所以进行安装
sudo snap install --classic code
打开VC时直接输入
code 文件
mosquitto安装
安装mosquitto服务器
引入mosquitto仓库并更新
sudo apt-add-respository ppa:mosquitto-dev/mosquitto-ppa
sudo apt-get update
安装mosquitto
sudo apt-get install mosquitto
安装mosquitto客户端
sudo apt-get install mosquitto-clients
mosquitto常用指令
服务器端
开启/停止服务
sudo service mosquitto start
sudo service mosquitto stop
查看服务
sudo service mosquitto status
mosquitto命令
mosquitto [-c config file][-d| --daemon][-p port number][-v]
-c :表示加载启动文件
-d : mosquitto在后台运行(暂时还不知道有什么用)
-p :mosquitto启动后监听的端口号,会覆盖[-c config file]中指定的配置端口
-v :代码调试模式,输出更多信息
比如目前输入 mosquitto -v
,会输出一下信息:
客户端
客户端分为两个主要部分,订阅消息的 mosquitto_sub
和发布消息的mosquitto_pub
mosquitto_sub常用指令
-h :指定服务器地址,localhost表示本地通信,默认选项是本地通信
-p :连接的端口号,一般默认1883(在服务器的默认情况下,端口即为1883)
-t :指定topic
-d :打印debug信息
-v :打印接受信息、
-i :指定clientid,即指定自己的id,默认的是mosquitto_pub加上客户端的进程id,不能和 -I id前缀同时使用
-I :指定clientid前缀,与客户端的进程ID连接组成clientid,不能与 -i 同时使用
本地接受topic消息并打印的简单指令
mosquitto_sub -h loaclhost -p 1883 -t "demo" -v -d
mosquitto_pub常用指令
-h :指定服务器地址,localhost表示本地通信,默认选项是本地通信
-p :连接的端口号,一般默认1883(在服务器的默认情况下,端口即为1883)
-t :指定topic
-m :消息内容(-t 和 -m 指令需要一块使用)
-f :将指定文件内作为消息发送
-n :发送一个空(null)消息
-d : 打印debug信息
-i :客户端id
本地发布一个topic的简单指令
mosquitto_pub -h loaclhost -p 1883 -t "demo" -m "try"
代理(Authentication methods)
主要参考官网的这部分链接内容Authentication methods | Eclipse Mosquitto
对于mosquitto 2.0之后的版本,必须更改默认的代理选项客户端才能进行远程连接
身份验证主要可以分为三个方式:
- psaawors files.密码文件
- authentication plugins,身份验证插件
- unaunthorised/anonymous access 未经授权/匿名访问
可以使用三种方式的组合
同时可以设置 per_listener_setting true
不同监听器使用不同的监听方法
学习使用建议还是直接选择匿名登录,不用麻烦去修改配置文件
unaunthorised/anonymous access
目前mosquitto默认是非匿名访问的,配置匿名访问
allow_anonymous true
举例:
allow_anonymous true
listener 1883
protocol mqtt
password files
用于存储用户和密码,适用于少量静态用户
主要命令行
重新创建一个 password file
文件,或者直接复写
mosquitto_passwd -c <password file> <username>
在某个 password file
中添加用户
mosquitto_passwd <password file> <username>
对于上面俩条都是在文件中写入用户和密码,可以直接在用户后面加入密码,但密码可以通过命令行显示
在某个password file
中去除用户
mosquitto_passwd -D <password file> <username>
在更改完密码文件后,需要通过发送SIGHUP消息来重新加载文件
两种方式
第一种是杀死进程,比较麻烦
ps -a #找到mosquitto的进程id
kill -HUP <process id of mosquitto>
第二种是直接重启服务
systemctl restart mosquitto
举例
listener 1883
password_file /etc/mosquitto/password_file
对于配置了
per_listener_settings true
,需要在每个监听器后面加上文件密码选项
authentication plugins
使用比密码文件提供更多的控制,可以使用身份验证插件,在此不做介绍,可以自行看链接和官网
配置mosquitto.conf
编辑mosquitto.conf基本操作
sudo vim /etc/mosquitto/mosquitto.conf
对于vim的操作进行简单说明,vim主要是对文件进行操作
在进入文件后,点击
i
进行写操作,点击esc
退出写操作点击
:
q
!
关闭文件 ,点击:
w
q
!
是保存修改后关闭文件
加载mosquitto.conf是
sudo mosquitto -c mosquitto.conf
这里需要说明,conf中默认的user是 mosquitto,直接使用 -c 会报错,需要使用 sudo,也可以将conf中的user改为 root 即可
此处打开的conf文件内存为如下(本人已经更改了部分内容)
可以看到上面注释中说到完整的example路径,但初次打开路径后会发现只有
mosquitto.conf.gz
,该文件需要进行解压
sudo gzip -d mosquitto.conf.gz
再使用VC打开解压后的conf文件,即可打开具有完整内容的conf示例