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 参考资料
https://blog.csdn.net/wteruiycbqqvwt/article/details/90233955?spm=1001.2014.3001.5506
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
Supplementary
2021-07-08创建文档;2022-09-24添加 Mosquitto 安装时遇到的问题及解决问题,修改行文格式及用语等;

浙公网安备 33010602011771号