Mosquitto简要教程

http://www.blog.chinaunix.net/uid-25885064-id-3539075.html


一、获取、安装

      Mosquitto提供了Windows、Linux以及qnx系统的版本,安装文件可从http://mosquitto.org/files/binary/获取。Windows系统下的安装过程非常简单,甚至可以把Mosquitto直接安装成为系统服务;但是,在实际应用中更倾向于使用Linux系统的服务器。在Linux系统上安装Mosquitto,建议使用源码安装模式,最新的源码可从http://mosquitto.org/files/source/获取。解压之后,可以在源码目录里面找到主要的配置文件config.mk,其中包含了所有Mosquitto的安装选项,详细的参数说明如下:

  1. # 是否支持tcpd/libwrap功能.
  2. #WITH_WRAP:=yes

  3. # 是否开启SSL/TLS支持
  4. #WITH_TLS:=yes

  5. # 是否开启TLS/PSK支持
  6. #WITH_TLS_PSK:=yes

  7. # Comment out to disable client client threading support.
  8. #WITH_THREADING:=yes

  9. # 是否使用严格的协议版本(老版本兼容会有点问题)
  10. #WITH_STRICT_PROTOCOL:=yes

  11. # 是否开启桥接模式
  12. #WITH_BRIDGE:=yes

  13. # 是否开启持久化功能
  14. #WITH_PERSISTENCE:=yes

  15. # 是否监控运行状态
  16. #WITH_MEMORY_TRACKING:=yes
      这里需要注意的是,默认情况下Mosquitto的安装需要OpenSSL的支持;如果不需要SSL,则需要关闭config.mk里面的某些与SSL功能有关的选项(WITH_TLS、WITH_TLS_PSK)。接着,就是运行make install进行安装,完成之后会在系统命令行里发现mosquitto、mosquitto_passwd、mosquitto_pub和 mosquitto_sub四个工具,分别用于启动代理、管理密码、发布消息和订阅消息。



二、配置、运行

       安装完成之后,所有配置文件会被放置于/etc/mosquitto/目录下,其中最重要的就是Mosquitto的配置文件,即mosquitto.conf,以下是详细的配置参数说明。

  1. =================================================================
  2. # General configuration
  3. =================================================================

  4. # 客户端心跳的间隔时间
  5. #retry_interval 20

  6. # 系统状态的刷新时间
  7. #sys_interval 10

  8. # 系统资源的回收时间,0表示尽快处理
  9. #store_clean_interval 10

  10. # 服务进程的PID
  11. #pid_file /var/run/mosquitto.pid

  12. # 服务进程的系统用户
  13. #user mosquitto

  14. # 客户端心跳消息的最大并发数
  15. #max_inflight_messages 10

  16. # 客户端心跳消息缓存队列
  17. #max_queued_messages 100

  18. # 用于设置客户端长连接的过期时间,默认永不过期
  19. #persistent_client_expiration

  20. =================================================================
  21. # Default listener
  22. =================================================================

  23. # 服务绑定的IP地址
  24. #bind_address

  25. # 服务绑定的端口号
  26. #port 1883

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

  29. # cafile:CA证书文件
  30. # capath:CA证书目录
  31. # certfile:PEM证书文件
  32. # keyfile:PEM密钥文件
  33. #cafile
  34. #capath
  35. #certfile
  36. #keyfile

  37. # 必须提供证书以保证数据安全性
  38. #require_certificate false

  39. # 若require_certificate值为true,use_identity_as_username也必须为true
  40. #use_identity_as_username false

  41. # 启用PSK(Pre-shared-key)支持
  42. #psk_hint

  43. # SSL/TSL加密算法,可以使用“openssl ciphers”命令获取
  44. # as the output of that command.
  45. #ciphers

  46. =================================================================
  47. # Persistence
  48. =================================================================

  49. # 消息自动保存的间隔时间
  50. #autosave_interval 1800

  51. # 消息自动保存功能的开关
  52. #autosave_on_changes false

  53. # 持久化功能的开关
  54. persistence true

  55. # 持久化DB文件
  56. #persistence_file mosquitto.db

  57. # 持久化DB文件目录
  58. #persistence_location /var/lib/mosquitto/

  59. =================================================================
  60. # Logging
  61. =================================================================

  62. # 4种日志模式:stdout、stderr、syslog、topic
  63. # none 则表示不记日志,此配置可以提升些许性能
  64. log_dest none

  65. # 选择日志的级别(可设置多项)
  66. #log_type error
  67. #log_type warning
  68. #log_type notice
  69. #log_type information

  70. # 是否记录客户端连接信息
  71. #connection_messages true

  72. # 是否记录日志时间
  73. #log_timestamp true

  74. =================================================================
  75. # Security
  76. =================================================================

  77. # 客户端ID的前缀限制,可用于保证安全性
  78. #clientid_prefixes

  79. # 允许匿名用户
  80. #allow_anonymous true

  81. # 用户/密码文件,默认格式:username:password
  82. #password_file

  83. # PSK格式密码文件,默认格式:identity:key
  84. #psk_file

  85. # pattern write sensor/%u/data
  86. # ACL权限配置,常用语法如下:
  87. # 用户限制:user <username>
  88. # 话题限制:topic [read|write] <topic>
  89. # 正则限制:pattern write sensor/%u/data
  90. #acl_file

  91. =================================================================
  92. # Bridges
  93. =================================================================

  94. # 允许服务之间使用“桥接”模式(可用于分布式部署)
  95. #connection <name>
  96. #address <host>[:<port>]
  97. #topic <topic> [[[out | in | both] qos-level] local-prefix remote-prefix]

  98. # 设置桥接的客户端ID
  99. #clientid

  100. # 桥接断开时,是否清除远程服务器中的消息
  101. #cleansession false

  102. # 是否发布桥接的状态信息
  103. #notifications true

  104. # 设置桥接模式下,消息将会发布到的话题地址
  105. # $SYS/broker/connection/<clientid>/state
  106. #notification_topic

  107. # 设置桥接的keepalive数值
  108. #keepalive_interval 60

  109. # 桥接模式,目前有三种:automatic、lazy、once
  110. #start_type automatic

  111. # 桥接模式automatic的超时时间
  112. #restart_timeout 30

  113. # 桥接模式lazy的超时时间
  114. #idle_timeout 60

  115. # 桥接客户端的用户名
  116. #username

  117. # 桥接客户端的密码
  118. #password

  119. # bridge_cafile:桥接客户端的CA证书文件
  120. # bridge_capath:桥接客户端的CA证书目录
  121. # bridge_certfile:桥接客户端的PEM证书文件
  122. # bridge_keyfile:桥接客户端的PEM密钥文件
  123. #bridge_cafile
  124. #bridge_capath
  125. #bridge_certfile
  126. #bridge_keyfile

  127. # 自己的配置可以放到以下目录中
  128. include_dir /etc/mosquitto/conf.d

       启动Mosquitto服务很简单,直接运行命令行“ mosquitto -c /etc/mosquitto/mosquitto.conf -d ”即可。另外,Mosquitto是个纯异步IO框架,经测试可以轻松处理20000个以上的客户端连接。当然,实际的最大承载量还和业务的复杂度有比较大的关系。测试的时候不要忘记调整系统的最大连接数和栈大小,比如Linux上可用ulimit -n20000 -s512命令设置你需要的系统参数。

<think>好的,我现在需要帮用户解决关于如何设置MQTT本地服务器地址的问题。首先,我需要确认用户的具体需求。用户提到的是在本地搭建MQTT服务器,并且想知道如何配置服务器地址。根据用户提供的引用内容,他们可能已经参考了一些搭建教程,比如使用Mosquitto或EMQX,现在需要具体的地址配置步骤。 首先,我得回想一下MQTT服务器本地配置的基本流程。本地服务器地址通常指的是运行MQTT服务的机器的IP地址或者本地回环地址127.0.0.1,端口默认是1883(非SSL)或8883(SSL)。不过具体配置可能因使用的服务器软件不同而有所差异,比如Mosquitto和EMQX的设置方式可能不一样。 用户提供的引用中有提到Windows下搭建MQTT服务器的步骤,包括Mosquitto和EMQX的安装。例如,引用[1]和[2]提到了Mosquitto的搭建,引用[3]和[4]是关于EMQX的配置。因此,我需要分别针对这两种常见的情况来解答。 对于Mosquitto,默认情况下安装后服务器地址就是localhost:1883,用户只需要确保服务已启动,客户端连接时使用这个地址即可。如果需要修改监听地址或端口,可能需要编辑mosquitto.conf文件,设置listener参数。比如,如果想让服务器监听所有网络接口,可以设置为0.0.0.0:1883,但本地连接还是用127.0.0.1。 而EMQX的默认地址也是localhost:1883,但如果是通过Docker安装,可能需要检查端口映射是否正确。引用[3]中提到了使用Docker运行EMQX,并配置用户认证,这时候地址可能还是localhost,除非Docker配置了其他网络设置。 另外,用户可能还需要配置防火墙允许端口访问,或者设置用户名密码,这部分在引用[1]和[3]里都有提到,比如在EMQX中添加用户。不过用户当前的问题主要是地址设置,所以可能不需要深入讨论认证部分,但可以简要提及。 总结下来,我需要分步骤说明如何设置地址,涵盖Mosquitto和EMQX两种常见服务器软件,并指出默认地址以及如何修改配置。同时,提醒用户检查服务是否运行,端口是否开放,以及客户端连接时的正确格式。可能还需要提到测试连接的方法,例如使用MQTTX客户端工具,如引用[2]中提到的,来验证连接是否成功。 最后,生成的相关问题需要围绕用户可能遇到的后续步骤,比如性能优化、安全配置或客户端连接问题,这样能帮助他们进一步解决问题。</think>### MQTT本地服务器地址设置方法 设置MQTT本地服务器地址需要根据具体使用的服务软件(如Mosquitto或EMQX)进行配置,以下是详细步骤: --- #### **一、基础配置原理** MQTT本地服务器地址通常为: - **默认地址**:`127.0.0.1`(本地回环地址)或 `localhost` - **默认端口**:`1883`(非加密通信)或 `8883`(SSL加密通信) --- #### **二、Mosquitto服务器地址设置** 1. **默认地址** 安装Mosquitto后,默认监听本地的`1883`端口,客户端可直接使用以下地址连接: $$ \text{地址:} \mathtt{127.0.0.1:1883} $$ 若需允许外部设备访问,需修改配置文件: ```bash listener 0.0.0.0 1883 # 监听所有网络接口 allow_anonymous true # 允许匿名连接(测试用) ``` 完成后重启服务生效[^2]。 2. **验证服务状态** 通过命令检查服务是否运行: ```bash netstat -ano | findstr :1883 ``` --- #### **三、EMQX服务器地址设置** 1. **本地默认地址** EMQX安装后默认绑定`0.0.0.0:1883`,本地客户端可连接: $$ \text{地址:} \mathtt{localhost:1883} $$ 若通过Docker运行,需确保端口映射正确: ```bash docker run -d --name emqx -p 1883:1883 -p 8083:8083 emqx/emqx ``` 2. **修改监听地址** 编辑EMQX配置文件`emqx.conf`,调整监听参数: ```bash listeners.tcp.default { bind = "127.0.0.1:1883" # 仅允许本地连接 } ``` --- #### **四、客户端连接示例** 使用MQTTX客户端连接时,配置如下: - **Broker地址**:`127.0.0.1` - **端口**:`1883` - **用户名/密码**:若服务器启用了认证(参考引用[^3]),需填写对应凭据。 --- #### **常见问题排查** 1. **连接失败** - 检查服务是否启动(如Windows服务中确认Mosquitto运行状态)[^1]。 - 防火墙是否放行端口`1883`。 2. **外部设备无法访问** 确保服务器配置监听地址为`0.0.0.0`而非`127.0.0.1`。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值