如何在 Windows Server 2022 阿里云服务器上搭建自己的 MQTT 服务器之二Mosquitto服务器

如何,windows,server,阿里,服务器,搭建,自己,mqtt,之二,mosquitto · 浏览次数 : 94

小编点评

## 总结内容 1. 使用了11种常见问题,查找被占用的端口、停止端口等。 2. 编写了代码,搭建了服务器,主要负责的是客户端的编码和实现。 3. 可以在开源组件中免费使用,减少编码时间。 4. 编写了代码,实现了客户端的功能。 5. 服务器关系不大,主要负责搭建,根本不用编码。 6. 编写了代码,实现了客户端的功能。 7. 编写了代码,搭建了服务器,主要负责的是客户端的编码和实现。 8. 其实,我们做 IOT 开发,和服务器关系不大,编码也不很多,现在有很多开源的组件可以免费使用,一句话,服务器我们只负责搭建,根本不用编码。 9. 编写了代码,实现了客户端的功能。 10. 不忘初心,继续努力,老天不会辜负努力的人。

正文

一、介绍
    最近几天都在搭建MQTT服务器,几天前搭建好了一个 Apache-Apollo的 MQTT 服务器,当我们在管理我们的主题的时候,发现主题的名称的斜杠(/)变成了点号(.),正好我在调试程序,在调用的时候出现了一些问题,各种解决办法都想了,还是没有解决,于是就向重新搭建一个 MQTT 服务器,试试客户端调用还会出现以前那个问题吗?(其实,那个问题,是我发布消息的时候,主题选择有误导致的,具体就不说了)。
    有很多网友推荐,让我使用 Mosquitto 做 MQTT 服务器,这次我就听取大家的建议,于是我就搭建了一个 Mosquitto 的MQTT 服务器。测试程序也很顺利,当然有掌握了一种新的 MQTT 服务器的搭建方法,也不错。
    我的搭建环境如下:
        云平台:阿里云平台
        操作系统:Windows Server 2022 Datacenter
        机器内存:8.00 GB (7.73 GB 可用)
        系统类型:64 位操作系统, 基于 x64 的处理器
        MQTT服务器:Mosquitto 2.0.15
        MQTT客户端:MQTT.fx
二、实操步骤
    
      1、下载地址:https://mosquitto.org/download/
            
      2、安装
              2.1、下载完成后,双击安装文件“mosquitto-2.0.15-install-windows-x64.exe”进行安装。
                      
                2.2、安装很简单,直接下一步。
                            
                    点击 “next”

                         
                    点击 “next”
                
                    选择安装路径"D:\Program Files\mosquitto"进行安装,点击"Install",完成安装。
                
                    注意事项:之前的版本需要拷贝Openssl依赖库的文件"libssl-1_1-x64.dll"、“libcrypto-1_1-x64.dll”,现在安装完后自带该文件,不再需要拷贝。

                        
      3、安装为Windows 服务
              3.1、软件安装完成后,会自动生成服务"Mosquitto Broker",需要手动点击“启动”服务后,mosquitto才会正常运行。Mosquitto服务默认占用1883端口。
                     
           3.2、查看运行的 Windows 服务。
                 
            3.3、开启服务,系统启动,自动运行。
                

      4、测试服务。

              4.1、通过cmd命令,切换到mosquitto安装目录,打开第一个命令窗口,订阅主题。
                    执行命令:mosquitto_sub.exe -v -t topicMyMQTT
                        -v 打印调试信息。
                        -t 指定主题名称。
            
                         

              4.2、发布主题及消息

                    执行命令:mosquitto_pub.exe -t topicMyMQTT -m testMessage
                        -t 指定主题名称
                        -m 要发送的消息内容

                         

              4.3、打印消息

                      

              4.4、设置密码
                命令:mosquitto_passwd.exe -b pwfile/pwfile.example admin patrick******

                  pwfile/pwfile.example:这个是密码文件的地址,写的是相对目录,必须在 mosquitto.conf 配置文件,我也增加了一个目录。
                            password_file D:\Program Files\mosquitto\pwfile\pwfile.example

                  



      5、文件作用

              mosquitto.conf        mosquitto服务器配置文件
              mosquitto.exe        用来开启broker
              mosquitto_passwd.exe    用来设置用户的账号与密码
              mosquitto_pub.exe        用来发布消息
              mosquitto_sub.exe        用来订阅消息
              pwfile.example        通过mosquitto_passwd来存储用户账号密码的文件

      6、配置系统环境变量
              此电脑(右键)–>属性–>高级系统设置–>环境变量–>编辑Path变量
            
    
      7、打开配置文件mosquitto.conf更改默认配置
              # 设置允许匿名连接,则省略第6步;如果禁止匿名连接,则需要配置账号、密码连接,则配置第6步
              allow_anonymous true

              # 密码文件路径,禁止匿名连接配置,允许匿名则不用配置
              password_file D:\Program Files\mosquitto\pwfile.example(必须写完整名称:pwfile.example,包括完整路径和后缀名,否则服务起不来)

           #权限配置
           acl_file D:\Program Files\mosquitto\aclfile.example(必须写完整名称:pwfile.example,包括完整路径和后缀名,否则服务起不来)

              # mqtt 协议配置,分为ipv4和ipv6两种,当前可以只配置启用一种
              listener 1883 0.0.0.0
              socket_domain ipv4
              protocol mqtt

              listener 1883 : :
              socket_domain ipv6
              protocol mqtt


              # webscoket 协议配置,分为ipv4和ipv6两种,当前可以只配置启用一种
              listener 1884 0.0.0.0
              protocol websockets
              socket_domain ipv4

              listener 1884 : :
              protocol websockets
              socket_domain ipv4

              # 允许的最大连接数,-1表示没有限制
              max_connections -1

              #配置绑定地址,可以外界访问
           bind_address 0.0.0.0

              # 开启持久化
              persistence true

              # 持久化目录
              persistence_location D:\Program Files\mosquitto\persistence(当前是目录结构)

              # 日志输出文件
              log_dest file D:\Program Files\mosquitto\log\mosquitto.log(完整路径、文件名和扩展名)

              # 权限划分
              acl_file D:\Program Files\mosquitto\aclfile\aclfile.example(完整路径、文件名和扩展名)

     8、配置mosquitto账号密码,输入密码界面不会显示密码,直接输入回车即可,需要连续输入两次。保证pwfile.example的路径和上面的配置一致。创建成功后pwfile.example会出现刚刚添加的用户信息。Win+R键输入cmd并进入mosquitto根目录输入:
    
              mosquitto_passwd -b pwfile/pwfile.example username #然后输入及确认密码

              # 使用-c 参数会导致清空密码文件,重新插入用户
              mosquitto_passwd -c pwfile/pwfile.example 用户名

              # 不使用-c 表示追加用户,不影响旧用户
              mosquitto_passwd -c pwfile/pwfile.example 用户名

              -c 是创建一个新的文件,只保存一个用户
              -b 在文件中新增一个用户在最后
              -D 从文件中删除指定用户
              -H密码加密方式

      9、重启mosquitto服务,配置文件的修改才能生效

              此电脑(右键)–>管理–>服务和应用程序–>服务–>启动Mosquitto Broker,或者在 cmd 命令行中直接输入命令:services.msc,可以直接打开服务管理器。
            


      10、mosquitto服务器使用
    
              10.1、启动服务器
                  命令:mosquitto.exe -c mosquitto.conf -v

              10.2、订阅者
                  命令:mosquitto_sub.exe -t "test"
                      -c 指定客户端clean_session是否保存。
                      -d 打印debug信息
                      -h 指定要连接的域名 默认为localhost
                      -i 指定客户端clientid
                      -I 指定clientId前缀
                      -k keepalive 每隔一段时间,发PING消息通知broker,仍处于连接状态。 默认为60秒.
                      -q 指定希望接收到QoS为什么的消息 默认QoS为0
                      -R 不显示陈旧的消息
                      -t 订阅topic
                      -v 打印消息
                      --will-payload 指定一个消息,该消息当客户端与broker意外断开连接时发出。该参数需要与--will-topic一起使用
                      --will-qos Will的QoS值。该参数需要与--will-topic一起使用
                      --will-retain 指定Will消息被当做一个retain消息(即消息被广播后,该消息被保留起来)。该参数需要与--will-topic一起使>用
                      --will-topic 用户发送Will消息的topic


              10.3、 发布者
                  命令:mosquitto_pub.exe -t "test" -m "测试信息"
                      -d 打印debug信息
                      -f 将指定文件的内容作为发送消息的内容
                      -h 指定要连接的域名 默认为localhost
                      -i 指定客户端clientid,默认为附加进程ID的mosquitto_pub_
                      -I 指定clientId前缀
                      -m 消息内容
                      -n 发送一个空(null)消息
                      -p 连接端口号
                      -q 指定QoS的值(0,1,2)
                      -t 指定topic
                      -u 用户名
                      -P 用户密码
                      -V 指定MQTT协议版本
                      --will-payload 指定一个消息,该消息当客户端与broker意外断开连接时发出。该参数需要与--will-topic一起使用
                      --will-qos Will的QoS值。该参数需要与--will-topic一起使用
                      --will-retain 指定Will消息被当做一个retain消息(即消息被广播后,该消息被保留起来)。该参数需要与--will-topic一起使 用
                      --will-topic 用户发送Will消息的topic
    
      11、常见问题:
              11.1、 查找被占用的端口

                      # 查找使用的端口
                      netstat -ano

                      # 查找指定的端口
                      netstat -ano |findstr 1883

              11.2、停止端口
    
                      # 停用端口
                      taskkill -PID 8984 -F

                      # 查看占用此端口的进程,在任务管理器中强制结束
                      tasklist|findstr 8984

三、总结
    
好了,今天就写到这里了,用的多了,也能有一些自己的总结。其实,我们做 IOT 开发,和服务器关系不大,编码也不很多,现在有很多开源的组件可以免费使用,一句话,服务器我们只负责搭建,根本不用编码,主要负责的是客户端的编码和实现。当然,经历过,也就知道了,否则,还是云里雾里的。不忘初心,继续努力,老天不会辜负努力的人。

与如何在 Windows Server 2022 阿里云服务器上搭建自己的 MQTT 服务器之二Mosquitto服务器 相似的内容:

如何在 Windows Server 2022 阿里云服务器上搭建自己的 MQTT 服务器之一Apache-Apollo服务器。

一、简介 最近,在做一个项目的时候,需要在线管理网络继电器,以前也做过硬件的项目,但是这样的项目不多。现在我想实现一个在线可以接受网络继电器发送的信号,也可以向网络继电器发送命令,控制其的运行。这个功能的实现需要物联网的支持,我在咨询了网络继电器卖家,想要在线实现网络硬件的管理有三种解决方案。 第一

如何在 Windows Server 2022 阿里云服务器上搭建自己的 MQTT 服务器之二Mosquitto服务器

一、介绍 最近几天都在搭建MQTT服务器,几天前搭建好了一个 Apache-Apollo的 MQTT 服务器,当我们在管理我们的主题的时候,发现主题的名称的斜杠(/)变成了点号(.),正好我在调试程序,在调用的时候出现了一些问题,各种解决办法都想了,还是没有解决,于是就向重新搭建一个 MQTT 服务

Windows Server 2022 初始设置

添加本地用户 添加新的本地用户。 在CUI配置上,按如下方式设置。 使用管理员权限运行 PowerShell 并按如下方式进行配置。 Windows PowerShell 版权所由 (C) Microsoft Corporation。 保留所有权利。 安装最新的 PowerShell,了解新功能和改

Windows Server 2022 NTP服务器

一、配置NTP服务器 配置NTP服务器,为客户端提供时间同步服务。 如果计算机是Active Directory域控制器,则NTP服务器功能已自动启动。 因此,下面的示例是计算机在工作组环境中启用NTP服务器功能。 1.1 使用管理员权限运行 PowerShell 并配置。 Windows Powe

关于Unity 如何与Blazor Server结合

关于Unity 如何与Blazor Server结合 一、介绍 最近工作中有`Unity`与`Blazor Server`结合的需求,在网上找了一圈,发现这方面的资料比较少,特此写下这篇记录一下自己的实现过程,希望可以帮到有需要的朋友。(下方多图预警) OS Version : windows 11

基于 Vagrant 手动部署多个 Redis Server

环境准备 宿主机环境:Windows 10 虚拟机环境:Vagrant + VirtualBox Vagrantfile 配置 首先,我们需要编写一个 Vagrantfile 来定义我们的虚拟机配置。假设已经在 D:\Vagrant\redis 目录下创建了一个 Vagrantfile,其内容如下:

如何在 Windows 使用 Podman Desktop 取代 Docker Desktop

Podman Desktop 是 Docker Desktop 的免费替代品,是本地开发使用的另一个绝佳选择。它提供了类似的功能集,同时保持完全开源,让您避免使用 Docker 产品的许可问题。在本文中,您将学习如何安装和开始使用 Podman Desktop 来运行容器并部署到 Kubernete

UOS 开启 VisualStudio 远程调试 .NET 应用之旅

本文记录的是在 Windows 系统里面,使用 VisualStudio 2022 远程调试运行在 UOS 里面 dotnet 应用的配置方法 本文写于 2024.03.19 如果你阅读本文的时间距离本文编写的时间过于长,那本文可能包含过期的知识 我将以我的 UOS 虚拟机作为例子告诉大家如何在 W

《爆肝整理》保姆级系列教程-玩转Charles抓包神器教程(2)-charles安装激活(Mac)最新简单教程【亲测有效】

1.简介 上一篇中宏哥介绍了如何在Windows系统安装激活Charles,那么使用Mac系统的小伙伴或者童鞋们就不高兴了,怎么没有Mac的安装激活教程了。宏哥不能厚此薄彼,今天专门补充一篇在Mac上安装Charles并且将其激活。 2.Mac下载安装 2.1下载Charles 官网下载:https

FFmpeg开发笔记(三十九)给Visual Studio的C++工程集成FFmpeg

​《FFmpeg开发实战:从零基础到短视频上线》一书的“第11章 FFmpeg的桌面开发”介绍了如何在Windows环境对Qt结合FFmpeg实现桌面程序,那么Windows系统通过Visual Studio开发桌面程序也是很常见的,下面就介绍如何在Visual Studio的C++工程中集成FFm