Mosquitto 服务器的搭建(一)-- 安装与简单的测试 2022-9-24 更新


Introduction

这篇博客写于 2021-7-8 ,当时因项目需求急需一个带有 MQTT 协议的云服务平台,即使有 阿里云 等众多包含有物联网云服务的厂商,鉴于时间紧迫,无法保证在短时间内公网使用的审批手续能下来,而手边有一台已通过审批、备案的 Ubuntu 系统的云服务器,故尝试自己搭建 MQTT 云服务平台,作备份方案。当时测试的系统是 Ubuntu 18.04 LTS,在完成测试与博客编写之后,物联网平台的公网审批通过,故没有进行深一步测试。
2022-9-24 又因项目需求,需要使用 MQTT 协议进行部分数据的传输,因而参照此文档进行安装,本次安装的系统版本为 Ubuntu 20.04 LTS ,安装时发现诸多此前未见的问题,故对本文档进行补充。补充之余,对文档之行文格式、用语等内容稍作修饰。


Chapter 1 下载

虽在 Ubuntu 系统下可以通过 apt-get 来非常便捷地安装 mosquitto,但是并不推荐,因为这样子安装 mosquitto 对于配置文件的修改非常的复杂。所以并不推荐。

最好是在mosquitto的官方网站来下载 tar.gz 安装包,我是用的是 1.4.15 版本的,使用如下命令直接下载

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

Chapter 2 解压

tar -xvf mosquitto-1.4.15.tar.gz

Chapter 3 安装 Mosquitto

cd mosquitto-1.4.15
sudo make
sudo make install

注意这里必须加上 sudo ,不然会出现权限不够的情况


Chapter 4 安装时问题的解决 2022-9-24 更新

Part 1 GCC

这里需要注意,在编译的时候会出现以下的问题
如果出现类似下图与 GCC 相关的错误
在这里插入图片描述
可能是因为没有提供 C/C++ 的编译环境,因此需要手动进行安装。
我们需要输入一下命令

sudo apt-get install build-essential

Part 2 Openssl/ssl.h

提示编译找不到 openssl/ssl.h
在这里插入图片描述

输入以下命令解决

sudo apt-get install libssl-dev

Part 3 ares.h

提示:缺少 ares.h
在这里插入图片描述

输入以下命令解决

sudo apt-get install libc-ares-dev

Part 4 uuid/uuid.h

如果出现这样的问题
在这里插入图片描述
说明缺少库文件,输入下面的指令解决问题

sudo apt-get install uuid-dev

Part 5 无法创建普通文件'/usr/local/lib/libmosquitto.so.1': 权限不够

无法创建普通文件 '/usr/local/lib/libmosquitto.so.1': 权限不够
回到编译后的文件夹里,进入到 lib 文件夹,执行如下指令:

sudo cp libmosquitto.so.1 /usr/local/lib

然后执行

sudo ln -s /usr/local/lib/libmosquitto.so.1 /usr/lib/libmosquitto.so.1

再执行

sudo ldconfig

Part 6 如果依然报错

打开 config.mk 文件。
WITH_SRV:=yes 改成 WITH_SRV:=no 就可以编译了


Chapter 5 添加启动用户

sudo groupadd mosquitto
sudo useradd -g mosquitto mosquitto -s /sbin/nologin

复制配置文件

cd /etc/mosquitto
sudo cp mosquitto.conf.example mosquitto.conf

Chapter 6 启动

运行如下的代码开启服务器

mosquitto -c /etc/mosquitto/mosquitto.conf 

再新建一个Terminal,使用netstat -tunlp|grep 1883 来检查端口是否被监听

使用 mosquitto_sub -t 'firstmqtt' 请求一个订阅

再在本机新建一个Terminal,用mosquitto_pub -t 'firstmqtt' -m 'Hello World'发布一个订阅请添加图片描述
效果如下:左下角的是订阅的,右上角的是发布的,发布的信息是Hello World,左下角则显示了Hello World

我可以通过外部设备向服务器发送数据,用如下格式

mosquitto_pub  -h 192.168.31.177 -p 1883 -t firstmqtt -m 'you are so great'

请添加图片描述图片展示了我向一台内网 IP 地址为 192.168.31.177 的服务器发送了一条数据。左下角是我通过 SSH 远程连接的服务器的终端,则显示了这条数据。

Chapter 7 总结

到此为止,MQTT 服务器搭建的第一阶段就完成了,上面的测试也证明了该 Broker 是能够正常运行的。

Chapter 8 参考资料

http://mosquitto.org

https://blog.csdn.net/wteruiycbqqvwt/article/details/90233955?spm=1001.2014.3001.5506

https://blog.csdn.net/houjixin/article/details/46711547

https://blog.csdn.net/weixin_30443731/article/details/95701086

https://blog.csdn.net/weixin_30443731/article/details/95701086

https://blog.csdn.net/fh15138451783/article/details/53160173

https://blog.csdn.net/klarclm/article/details/8550931

https://blog.csdn.net/haifengid/article/details/51801527


Supplementary

  1. 2021-07-08 创建文档;
  2. 2022-09-24 添加 Mosquitto 安装时遇到的问题及解决问题,修改行文格式及用语等;
posted @ 2022-09-25 11:04  KD_Mercury  阅读(494)  评论(0编辑  收藏  举报
banniang