Mosquitto 服务器的搭建(一)-- 安装与简单的测试 2023-4-27 更新


Introduction

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


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 开机自启动 2023-04-27 更新

我将 MQTT 服务安装在了一台 Ubuntu 服务器上,输入下面的指令,进入目标目录

cd /etc/systemd/system

输入下面的指令创建 mqtt.service 文件,并进入编辑模式

sudo vim mqtt.service

在文件夹内写入下面的内容

[Unit]
Description="mqtt_broker"
After=network.target

[Service]
ExecStart=mosquitto -c /etc/mosquitto/mosquitto.conf 
User=root

[Install]
WantedBy=multi-user.target

保存退出,输入下面的指令更新系统服务

sudo systemctl daemon-reload

输入下面的指令设置 MQTT 开机自启动

sudo systemctl enable mqtt.service

输入下面的指令启动 MQTT 服务

sudo systemctl start mqtt.service

输入下面的指令可以查看 MQTT 服务工作状态

sudo systemctl status mqtt.service

下面是工作状态信息:

(base) labserver02@labserver02:/etc/systemd/system$ sudo systemctl status mqtt.service
[sudo] password for labserver02: 
● mqtt.service - "mqtt_broker"
     Loaded: loaded (/etc/systemd/system/mqtt.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2023-04-27 14:39:51 CST; 1h 46min ago
   Main PID: 773 (mosquitto)
      Tasks: 1 (limit: 4494)
     Memory: 1.2M
     CGroup: /system.slice/mqtt.service
             └─773 /usr/local/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf

4月 27 14:39:51 labserver02 systemd[1]: Started "mqtt_broker".
4月 27 14:39:53 labserver02 mosquitto[773]: 1682577593: mosquitto version 1.4.15 (build date 2023-04-24 16:23:00+0800) starting
4月 27 14:39:53 labserver02 mosquitto[773]: 1682577593: Config loaded from /etc/mosquitto/mosquitto.conf.
4月 27 14:39:53 labserver02 mosquitto[773]: 1682577593: Opening ipv4 listen socket on port 1883.
4月 27 14:39:53 labserver02 mosquitto[773]: 1682577593: Opening ipv6 listen socket on port 1883.

如果无法连接到 MQTT 服务,可能是由于 ufw 防火墙没有放行端口,输入下面的指令放行端口

sudo ufw allow 1883 

需要说明的是,我安装该服务使用的是默认的端口号 1883 ,如果你更改了端口,请换成你所设置的端口号。

Chapter 8 总结

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

Chapter 9 参考资料

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

https://www.jianshu.com/p/14dbdea43710

https://blog.csdn.net/weixin_35750747/article/details/129071181


Supplementary

  1. 2021-07-08 创建文档;
  2. 2022-09-24 添加 Mosquitto 安装时遇到的问题及解决问题,修改行文格式及用语等;

猜你喜欢

转载自blog.csdn.net/qq_17790209/article/details/118575351
今日推荐