热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Mosquitto服务器的搭建(一)–安装与简单的测试2022924更新

目录IntroductionChapter1下载Chapter2解压Chapter3安装MosquittoChapter4安装时问题的解决2022-9-24更新Part1GCCPa

目录



  • Introduction

  • Chapter 1 下载

  • Chapter 2 解压

  • Chapter 3 安装 Mosquitto

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

    • Part 1 GCC

    • Part 2 Openssl/ssl.h

    • Part 3 ares.h

    • Part 4 uuid/uuid.h

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

    • Part 6 如果依然报错



  • Chapter 5 添加启动用户

    • 复制配置文件



  • Chapter 6 启动

  • Chapter 7 总结

  • Chapter 8 参考资料

  • Supplementary




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 安装时遇到的问题及解决问题,修改行文格式及用语等;



推荐阅读
  • 在CentOS 7上部署WebRTC网关Janus
    在CentOS 7上部署WebRTC网关Janus ... [详细]
  • 本文详细阐述了如何从源代码编译Apache HTTPD 2.4服务器,涵盖了必要的依赖安装、配置步骤及编译过程。通过本指南,读者可以深入了解HTTPD的内部机制,并掌握在Linux环境下手动构建HTTPD的方法。建议对服务器管理和开发感兴趣的读者仔细阅读,以获取更多实用技巧。例如,使用`yum install gcc pcre-devel`来安装所需的编译工具和库。 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • 体积小巧的vsftpd与pureftpd Docker镜像在Unraid系统中的详细配置指南:支持TLS加密及IPv6协议
    本文详细介绍了如何在Unraid系统中配置体积小巧的vsftpd和Pure-FTPd Docker镜像,以支持TLS加密和IPv6协议。通过这些配置,用户可以实现安全、高效的文件传输服务,适用于各种网络环境。配置过程包括镜像的选择、环境变量的设置以及必要的安全措施,确保了系统的稳定性和数据的安全性。 ... [详细]
  • 在安装 iOS 开发所需的 CocoaPods 时,用户可能会遇到多种问题。其中一个常见问题是,在执行 `pod setup` 命令后,系统无法连接到 GitHub 以更新 CocoaPods/Specs 仓库。这可能是由于网络连接不稳定、GitHub 服务器暂时不可用或本地配置错误等原因导致。为解决此问题,建议检查网络连接、确保 GitHub API 限制未被触发,并验证本地配置文件是否正确。 ... [详细]
  • 在开发过程中,我最初也依赖于功能全面但操作繁琐的集成开发环境(IDE),如Borland Delphi 和 Microsoft Visual Studio。然而,随着对高效开发的追求,我逐渐转向了更加轻量级和灵活的工具组合。通过 CLIfe,我构建了一个高度定制化的开发环境,不仅提高了代码编写效率,还简化了项目管理流程。这一配置结合了多种强大的命令行工具和插件,使我在日常开发中能够更加得心应手。 ... [详细]
  • 如何将PHP文件上传至服务器及正确配置服务器地址 ... [详细]
  • 本文详细介绍了如何在Linux系统中搭建51单片机的开发与编程环境,重点讲解了使用Makefile进行项目管理的方法。首先,文章指导读者安装SDCC(Small Device C Compiler),这是一个专为小型设备设计的C语言编译器,适合用于51单片机的开发。随后,通过具体的实例演示了如何配置Makefile文件,以实现代码的自动化编译与链接过程,从而提高开发效率。此外,还提供了常见问题的解决方案及优化建议,帮助开发者快速上手并解决实际开发中可能遇到的技术难题。 ... [详细]
  • 本指南详细介绍了如何使用 `apt-get` 命令在 Ubuntu 系统上部署 MySQL 5、Apache 2、PHP 5 及 phpMyAdmin。首先,建议读者查阅 Ubuntu 的官方文档以获取更多背景信息。通过本文,您将逐步了解每个软件包的安装过程及其配置方法,确保系统环境的稳定性和安全性。此外,还将提供一些常见问题的解决方案,帮助用户顺利完成部署。 ... [详细]
  • Python 3与PyCharm的安装及使用指南:初学者第一课(2018年3月28日)
    本文为初学者提供了详细的 Python 3 和 PyCharm 安装及使用指南。首先,针对 Windows 系统的用户,介绍了如何从搜狐镜像网站下载适合操作系统的 Python 3.6.4 版本,并确保选择正确的 32 位或 64 位安装包。此外,还详细说明了 PyCharm 的安装步骤,帮助用户快速上手开发环境配置。通过本指南,初学者可以轻松完成 Python 开发环境的搭建,为后续学习打下坚实基础。 ... [详细]
  • 在使用 `requests` 库进行 HTTP 请求时,如果遇到 `requests.exceptions.SSLError: HTTPSConnectionPool` 错误,通常是因为 SSL 证书验证失败。解决这一问题的方法包括:检查目标网站的 SSL 证书是否有效、更新本地的 CA 证书库、禁用 SSL 验证(不推荐用于生产环境)或使用自定义的 SSL 上下文。此外,确保 `requests` 库和相关依赖项已更新到最新版本,以避免潜在的安全漏洞。 ... [详细]
  • 如何在Mac上构建高效的本地服务器环境
    在Mac上构建高效的本地服务器环境,首先需要了解基本步骤:1. 配置目录基础;2. 启动Apache服务;3. 添加自定义文档至本地服务器;4. 查看自定义效果。此外,还可以通过手机或其他电脑访问本机服务器,以确保跨设备的兼容性和调试效果。Mac系统自带的Apache服务为本地开发提供了便捷的工具,本文将详细介绍每个步骤的具体操作方法。 ... [详细]
  • 虚拟机网络设置与数据库远程连接优化指南
    本文针对个人计算机上虚拟机网络配置与数据库远程连接的问题,提供了一套详细的优化指南。在探讨远程数据库访问前,需确保网络配置正确,特别是桥接模式的设置。通过合理的网络配置,可以有效解决因虚拟机或网络问题导致的连接失败,提升远程访问的稳定性和效率。 ... [详细]
  • 在Ubuntu 20.04 Linux系统中部署Git的详细步骤与最佳实践
    在Ubuntu 20.04 Linux系统中部署Git时,首先确保您的操作系统版本正确,并已以具备sudo权限的用户身份登录。推荐使用APT软件包管理器进行安装,这是最简便且可靠的方法。此外,遵循最佳实践,如定期更新Git版本和配置全局设置,可以进一步提升使用体验和安全性。 ... [详细]
  • 深入解析 C 语言与 C++ 之间的差异及关联
    深入解析 C 语言与 C++ 之间的差异及关联 ... [详细]
author-avatar
猪的快乐旅途_278
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有