一、介绍
    最近几天都在搭建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服务器的更多相关文章

  1. [Windows Server 2008] 阿里云.云主机忘记密码解决方法

    ★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com ★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频. ★ 本节我们将带领大家:解决阿里云 ...

  2. [FTP]通过FileZilla在阿里云主机上搭建ftp服务器

    前一阵子租了一台服务器主机来玩,正好周末有时间研究了一下怎么搭建ftp server. 准备.首先要下载filezilla client和filezilla server, 下载地址: server: ...

  3. 在阿里云centos7上搭建openvpn(未成功)

    1.环境: 运行环境:阿里云 系统:centos 内核版本:-.el7.x86_64 各软件版本: iptables--.el7.x86_64 openvpn--.el7.x86_64 easy-rs ...

  4. 在阿里云ECS上搭建LEMP环境

    在阿里云买ECS的时候选择自己习惯的镜像系统,我一般都是使用Linux Ubuntu,所以,以下的配置都是在Ubuntu 14.04稳定支持版的环境中搭建Linux+Nginx+Mysql+PHP环境 ...

  5. Windows Server 2016域控制器升级到Windows Server 2022遇到的问题记录Fix error 0x800F081E – 0x20003

    1. 非域控服务器升级 将两台Web服务器和数据库服务器(Windows Server 2016, 2019)成功升级至到Windows Server 2022,非常顺利,一次成功. 直接在Windo ...

  6. Windows Server 远程桌面连接不上问题解决

    关于Windows Server 远程桌面连接不上的问题需要从服务.端口.防火墙这几方面进行检查: 服务器上需要 开启的服务: - Remote Access Auto Connection Mana ...

  7. 小白教程 Java web maven项目Windows下部署阿里云服务器全过程(买服务器,打包项目,连接服务器,配置服务器,部署项目)

    -------------首先:购买服务器---------------- Step1: 在https://www.aliyun.com/?utm_content=se_1043015注册登录阿里云 ...

  8. 如何在Windows Server 2008 R2没有磁盘清理工具的情况下使用系统提供的磁盘清理工具

    今天,刚好碰到服务器C盘空间满的情况,首先处理了临时文件和有关的日志文件后空间还是不够用,我知道清理C盘的方法有很多,但今天只分享一下如何在Windows Server 2008 R2没有磁盘清理工具 ...

  9. Windows Server基础架构云参考架构:硬件之上的设计

    作者 王枫 发布于2014年1月27日 综述 毫无疑问,移动互联网.社交网络.大数据和云计算已经成为IT发展的四个大的趋势.其中云计算又为前三个提供了一个理想的平台.今天不仅互联网公司,很多传统行业的 ...

  10. 阿里云服务器部署php的laravel项目,在阿里云买ECS 搭建 Linux+Nginx+Mysql+PHP环境的

    在阿里云买ECS的时候选择自己习惯的镜像系统,我一般都是使用Linux Ubuntu,所以,以下的配置都是在Ubuntu 14.04稳定支持版的环境中搭建Linux+Nginx+Mysql+PHP环境 ...

随机推荐

  1. SpringBoot 配置CORS处理前后端分离跨域配置无效问题解析

    前言 浏览器有跨域限制,非同源策略(协议.主机名或端口不同)被视为跨域请求,解决跨域有跨域资源共享(CORS).反向代理和 JSONP的方式.本篇通过 SpringBoot 的资源共享配置(CORS) ...

  2. .Net性能测试工具BenchmarkDotNet学习

    .Net性能测试工具BenchmarkDotNet学习 BenchmarkDotNet 是一个用于性能基准测试的开源框架.它可以让开发人员编写简单易懂的代码,并测量和分析这些代码的性能表现,从而帮助开 ...

  3. 【FAQ】统一扫码服务常见问题及解答

    1.隐私政策是怎么样的?收集哪些信息? 关于Scan Kit的隐私政策及收集的信息,请查看SDK隐私安全说明. Android:SDK隐私安全说明 iOS:SDK隐私安全说明 2.如何使用多码识别?多 ...

  4. Stream方法的介绍

    文章目录 前言 Lambda表达式 格式 函数式接口 Stream的方法介绍 forEach filter collect count sum limit 和skip groupingBy reduc ...

  5. 2023-02-13:力扣数据中心有 n 台服务器,分别按从 0 到 n-1 的方式进行了编号 它们之间以「服务器到服务器」点对点的形式相互连接组成了一个内部集群 其中连接 connections 是

    2023-02-13:力扣数据中心有 n 台服务器,分别按从 0 到 n-1 的方式进行了编号 它们之间以「服务器到服务器」点对点的形式相互连接组成了一个内部集群 其中连接 connections 是 ...

  6. 2022-12-28:有n个黑白棋子,它们的一面是黑色,一面是白色, 它们被排成一行,位置0~n-1上。一开始所有的棋子都是黑色向上, 一共有q次操作,每次操作将位置标号在区间[L,R]内的所有棋子翻

    2022-12-28:有n个黑白棋子,它们的一面是黑色,一面是白色, 它们被排成一行,位置0~n-1上.一开始所有的棋子都是黑色向上, 一共有q次操作,每次操作将位置标号在区间[L,R]内的所有棋子翻 ...

  7. 2021-03-05:go中,io密集型的应用,比如有很多文件io,磁盘io,网络io,调大GOMAXPROCS,会不会对性能有帮助?为什么?

    2021-03-05:go中,io密集型的应用,比如有很多文件io,磁盘io,网络io,调大GOMAXPROCS,会不会对性能有帮助?为什么? 福哥答案2021-03-05: 这是面试中被问到的.实力 ...

  8. 回溯理论基础及leetcode例题

    学习参考 回溯 与递归相辅相成;回溯是递归的副产品,只要有递归就会有回溯. 回溯函数也就是递归函数,指的都是一个函数. 回溯搜索法 纯暴力搜索 解决的问题 组合问题:N个数里面按一定规则找出k个数的集 ...

  9. 洛谷P3374 【模板】树状数组 1-(单点修改,区间查询)

    题目描述 如题,已知一个数列,你需要进行下面两种操作: 将某一个数加上 x 求出某区间每一个数的和 输入格式 第一行包含两个正整数 n,m,分别表示该数列数字的个数和操作的总个数. 第二行包含 n 个 ...

  10. 禁用input自动补全,模拟type=password输入字符显示为星号

    最近遇到一个想禁用浏览器的密码自动补全的功能,翻遍了整个技术论坛大多使用用auto-complete="new-password"但是本人测试不怎么管用,所有又找到了如下几种方法, ...