Ubuntu下搭建mosquitto服务器及测试

一、 安装mosquitto

1. 引入库:

   sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa

2. 安装:

   sudo apt-get update
   sudo apt-get install mosquitto

3. 添加和修改配置文件

-  添加配置文件

   1. 在/etc/mosquitto/conf.d目录下,添加配置文件myconfig.conf 配置文件

   sudo vi /etc/mosquitto/conf.d/myconfig.conf

   2. 粘入下面配置


   #添加监听端口(很重要,否则只能本机访问)

   listener 1883

   #-------------------------------------------

   # 关闭匿名访问,客户端必须使用用户名

   allow_anonymous false

   #指定 用户名-密码 文件

   password_file /etc/mosquitto/pwfile.txt

   #--------------------------------------------

-  添加账户及密码

   sudo mosquitto_passwd -c /etc/mosquitto/pwfile.txt 用户名

   回车后连续输入两次用户密码即可

-  启动mosquitto

   sudo service mosquitto start

-  查看mosquitto运行状态

   sudo service mosquitto status

-  最终配置文件结构 

/etc/mosquitto/
├── mosquitto.conf
├── passwd          # 密码文件
├── aclfile         # 权限文件
└── conf.d/
    └── auth.conf   # 认证配置

二、运行测试

-  MQTT.fx 新建客户端并连接服务器

   1. 打开MQTT.fx后按下图操作

   2. 右侧绿灯亮起则表示连接成功,下面即可进行相应的订阅或发布操作,此处电脑(一个客户端)订阅三个主题如下图所示:

   3. 装置处(另一个客户端)在成功连接服务器之后,发布相应主题信息,在电脑客户端上即可成功看到订阅的主题的消息负载内容。

三、遇到的问题及解决措施

- 遇到的问题

  电脑端MQTT.fx可正常连接服务器,电脑端可以ping通虚拟机,但装置处无法ping通虚拟机

- 解决措施

  将装置和虚拟机设为同一个网段,此处设为192.168.1.*

  • MQTT.fx 可能连接的是默认的 1883 端口(非TLS)
  • 您的代码可能误连接到 8883 端口(TLS默认端口)

  1. 设置虚拟机ip

      点击VMware 菜单栏编辑—> 虚拟网络编辑器 —>找到右下角的“更改设置" 按图中所示修改

      点击VMware 菜单栏编辑—> 虚拟机 —>设置 将网络连接方式改为桥接模式

      完成以上两个步骤后,打开虚拟机,在网络配置中,手动配置以太网IP(此处使用的是192.168.1.123);

      并且需要更改电脑直连装置的适配器选项,将ip改成装置同网段;

  2. 修改装置ip

      将装置ip设为与虚拟机同网段:192.168.1.138

  3. 完成上面两个步骤后,装置即可ping通虚拟机,意味着装置和服务器即可正常通信。

常见场景对照表

现象可能rc值解决方案
频繁意外断开MOSQ_ERR_CONN_LOST(7)检查网络稳定性/心跳设置
无法连接新BrokerMOSQ_ERR_CONN_REFUSED(5)验证协议版本/用户名密码
TLS连接失败MOSQ_ERR_TLS(8)检查CA证书链/加密套件
移动网络间歇断开MOSQ_ERR_ERRNO(256)+ETIMEDOUT增加keepalive时间

四、常用指令

# 使用命令行工具验证网络连通性
mosquitto_sub -h 192.168.1.XXX -t "test" -u "your_username" -P "your_password" -v
tail -f /var/log/mosquitto/mosquitto.log | grep "auth"
mosquitto -h  //查看Broker版本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值