在之前的文章:基于ESP32搭建物联网十六(用树莓派建立MQTT服务器[上])_你的幻境的博客-CSDN博客

我们已经成功为树莓派安装好系统,在本章中,我们将在该树莓派系统中安装MQTT服务器并测试使用。

安装mosquitto:

在安装前,我们最好更新一下软件源,输入

sudo apt-get update

成功更新软件源后,我们进行mosquitto的安装

mosquitto在树莓派的安装十分简单,我们已经在上一章中正常地用putty连接到树莓派。我们只要在命令行界面输入:

sudo apt-get install mosquitto mosquitto-clients

 

我们按"Y"键后回车继续安装

这里安装的有两个软件,一个是mosquitto,为服务器端。一个是mosquitto-clients,为客户端。安装客户端的目的是为了之后的方便。你也可以选择只安装服务器端。

如果安装完成大概是以上的界面,如果出现"error"之类的提示,请重新进行安装,大多安装不成功是因为软件源的问题。可以搜索一下更改一下你的软件源列表。

安装完成后,正常情况下,mosquitto会自动开启,我们查看一下mosquitto是否开启,输入命令查看进程

ps -ef | grep mosquitto

 

可以看到,进程已经启动,所用的配置文件为"/etc/mosquitto/mosquitto.conf"

我们查看一下该配置文件,输入命令

sudo nano /etc/mosquitto/mosquitto.conf

 文件内容

# Place your local configuration in /etc/mosquitto/conf.d/
#
# A full description of the configuration file is at
# /usr/share/doc/mosquitto/examples/mosquitto.conf.example

pid_file /run/mosquitto/mosquitto.pid

persistence true
persistence_location /var/lib/mosquitto/

log_dest file /var/log/mosquitto/mosquitto.log

include_dir /etc/mosquitto/conf.d

在这里大概说明一下

# pid文件
pid_file /run/mosquitto/mosquitto.pid

# 消息持久存储
persistence true

# 消息持久存储位置
persistence_location /var/lib/mosquitto/

# 日志文件
log_dest file /var/log/mosquitto/mosquitto.log

# 配置文件目录
include_dir /etc/mosquitto/conf.d

在未对mosquitto进行配置之前,我们是无法远程连接到该MQTT服务器的。我们先对mosquitto进行配置。

配置mosquitto

关于mosquitto的配置,我们在之前的基于ESP32搭建物联网服务器十三(自已搭建一个MQTT服务器)_esp32物联网_你的幻境的博客-CSDN博客y

 文章中已经有过介绍,这里简单地再走一个流程,需要配置的大约有以下项目

1、建立用户

2、设置密码文件位置

3、设置不允许匿名登陆

4、设置端口

5、设置同时监听mqtt和websockets端口

建立用户

因为密码文件会生成在当前文件夹,所以我们先进入配置文件所在的目录:

cd /etc/mosquitto/conf.d

输入命令:

sudo mosquitto_passwd -c pwfile test1

在首次建立用户时,我们需要加入"-c"参数来生成一个密码文件,之后加入用户,不用再使用该参数。"pwfile"参数为生成的密码文件的文件名。"test1"为生成的用户名。运行后会提示两次输入相同的密码。输入完成后会生成一个密码文件和用户。

我们建立第二个用户,输入命令:

sudo mosquitto_passwd pwfile test2

 同样运行后会提示两次输入相同的密码。输入完成后会在密码文件生成第二个用户。

同时,我们生成一个配置文件:

sudo nano /etc/mosquitto/conf.d/mosquitto.conf

文件输入以下配置内容:

#密码文件路径
password_file /etc/mosquitto/conf.d/pwfile

#禁止匿名访问
allow_anonymous false

#设置监听mqtt端口
listener 8080
protocol mqtt

#设置监听websockets端口
listener 8081
protocol websockets

如果要了解更多关于配置的介绍可以到之前的文章中查看:基于ESP32搭建物联网服务器十三(自已搭建一个MQTT服务器)_esp32物联网_你的幻境的博客-CSDN博客

 因为在树莓派中的mosquitto没有重启服务器的命令,我们直接重启树莓派。

sudo reboot

 这时,putty会断开与树莓派的连接,如果还需要对mosquitto进行配置,我们稍等一会可以再次运行putty来连接树莓派。

连接测试

如果不用再次对mosquitto进行配置,只要稍等一会,我们就可以直接对服务器进行连接测试。

我们还是用MQTTX工具来对MQTT服务器进行连接测试:

在服务器地址中填入安装树莓派系统时的主机地址。

在端口中填入之前配置的mqtt的端口号。

在用户和密码中填入之前配置的用户名和密码。

我们也需要对禁止匿名访问服务器进行测试,可以尝试不输用用户信息或故意输入错误的用户信息来进行测试(如果用户信息错误会显示"Not authorized"的提示),这里就不做说明了,请自行测试。

连接成功后我们添加一个订阅:

在发送窗口对该订阅发送消息:

如果成功会在消息窗口出现两条消息:

测试websockets端口

和之前一样,填入对应的信息,不同的是服务器地址前缀要改成"ws://",同时,我们测试一下第二个用户。如果正确连接,说明对于mosquitto的配置无误。

至此,我们的服务器已经配置完成,更多的配置,可以翻阅mosquitto的官方文档或相关教程,如果在之后的文章中有需要增加相关的配置,也会再次介绍。在下一篇文章中,将介绍树莓派安装花生壳工具来进行内网穿透,实现从外网也可以访问树莓派中的MQTT服务器。

更多推荐