Ubuntu搭建mosquitto服务器(MQTT服务器)

若该文为原创文章,转载请注明原文出处。

在测试MQTT,需要搭建自己MQTT服务器,所以在Ubuntu下直接搭建测试

一、mosquitto简介

一款实现了消息推送协议 MQTT v3.1 的开源消息代理软件,提供轻量级的,支持可发布/可订阅的的消息推送模式,使设备对设备之间的短消息通信变得简单,比如现在应用广泛的低功耗传感器,手机、嵌入式计算机、微型控制器等移动设备。一个典型的应用案例就是 Andy Stanford-ClarkMosquitto(MQTT协议创始人之一)在家中实现的远程监控和自动化。并在 OggCamp 的演讲上,对MQTT协议进行详细阐述。

二、安装步骤

1、安装

复制代码
sudo apt-get update 
sudo apt-get install mosquitto

2、安装客户端

复制代码
sudo apt-get install mosquitto-clients

三、添加和修改配置

1.添加配置文件

在/etc/mosquitto/conf.d目录下,添加配置文件myconfig.conf 配置文件:

复制代码
sudo vi /etc/mosquitto/conf.d/myconfig.conf

粘入下面这些配置

复制代码
#添加监听端口(很重要,否则只能本机访问)
listener 1883
#-------------------------------------------
# 关闭匿名访问,客户端必须使用用户名
allow_anonymous false

#指定 用户名-密码 文件
password_file /etc/mosquitto/pwfile.txt

# ========== 连接限制配置 ==========
# 全局最大连接数
max_connections 10000

max_connections_per_client 10
# 每个客户端(按IP地址或用户名)最多10个连接
# 防止单个用户/设备建立过多连接

max_keepalive 300
# 客户端最大心跳间隔 = 300秒(5分钟)
# 如果客户端设置的心跳间隔大于300秒,连接会被拒绝
# MQTT协议要求:客户端实际心跳 = 1.5 × keepalive值

persistent_client_expiration 1h
# 持久会话(clean_session=false)的过期时间 = 1小时
# 客户端断开后,其未消费消息和订阅信息保留1小时

max_inflight_messages 20
# "飞行中"消息的最大数量 = 20条
# 指已发送给客户端但未收到确认(QoS 1/2)的消息
# 超过20条后会暂停发送,直到客户端确认

max_queued_messages 1000
# 每个客户端最大排队消息数 = 1000条
# 客户端断开或处理慢时,最多缓存1000条消息
# 超过后新消息会被丢弃(根据规则)

#--------------------------------------------

2.添加账户及密码

复制代码
sudo mosquitto_passwd -c /etc/mosquitto/pwfile.txt 用户名

回车后连续输入2次用户密码即可,用户名自行修改

四、运行

1.启动mosquitto

复制代码
sudo service mosquitto start

2.查看mosquitto运行状态

复制代码
sudo service mosquitto status

3、 检查当前连接数

复制代码
# 查看当前连接
sudo systemctl status mosquitto

# 或查看日志
sudo tail -f /var/log/mosquitto/mosquitto.log

# 查看当前活跃连接数
mosquitto_sub -h localhost -t '$SYS/broker/clients/connected' -C 1 -u 用户名 -P 密码

# 查看历史最大连接数
mosquitto_sub -h localhost -t '$SYS/broker/clients/maximum' -C 1 -u 用户名 -P 密码

# 查看所有客户端连接信息(JSON格式)
mosquitto_sub -h localhost -t '$SYS/broker/clients' -C 1 -u 用户名 -P 密码

4、重新加载配置

复制代码
# 检查配置文件语法
sudo mosquitto -c /etc/mosquitto/mosquitto.conf --用户名

# 重启服务
sudo systemctl restart mosquitto

# 查看状态
sudo systemctl status mosquitto

五、测试

使用上位机软件,添加I和用户名密码,订阅消息,测试正常

后面部署到阿里云服务器,外网使用。

如有侵权,或需要完整代码,请及时联系博主。

相关推荐
qq_405268662 分钟前
Kali使用nginx部署前后端项目
运维·nginx
玉树临风江流儿2 分钟前
WSL2通过主机转发流量,实现与开发板互相ping通
linux·服务器·网络
程序 代码狂人4 分钟前
CentOS7中有趣的yum源(彩蛋)-----第二期
linux·运维·服务器
Y‍waiX‍‍‮‪‎⁠‌‫‎‌‫‬9 分钟前
CentOS7(Linux)从系统安装到环境搭建
linux·运维·服务器
是火云哦1 小时前
打包你的开发环境:Docker 从入门到上瘾
运维·docker·容器
迷路爸爸1801 小时前
无sudo权限远程连接Ubuntu服务器安装TeX Live实操记录(适配VS Code+LaTeX Workshop,含路径选择与卸载方案)
java·服务器·ubuntu·latex
我送炭你添花1 小时前
树莓派 3B+ 部署 TR-069 ACS(自动配置服务器)GenieACS 实录
运维·服务器·网络协议
扫地生大鹏1 小时前
阿里云大模型服务器安装SNMP包启发
运维·服务器
2601_949613021 小时前
flutter_for_openharmony家庭药箱管理app实战+用药提醒列表实现
服务器·前端·flutter
今晚打佬虎1 小时前
精准阻断 Docker 容器映射端口:流量路径诊断与 iptables 配置
运维·docker·容器