
Mosquitto 服务器的搭建(一)-- 安装与简单的测试 2023-4-27 更新
下载虽然在Ubuntu系统下可以通过apt-get来非常便捷地安装mosquitto,但是并不推荐,因为这样子安装mosquitto对于配置文件的修改非常的复杂。所以并不推荐。最好是在mosquitto的官方网站来下载 tar.gz 安装包,我是用的是 1.4.15 版本的,使用如下命令直接下载wgethttp://mosquitto.org/files/source/mosquitto-1.4.
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
2021-07-08
创建文档;2022-09-24
添加 Mosquitto 安装时遇到的问题及解决问题,修改行文格式及用语等;
更多推荐
所有评论(0)