第2章 Mosquitto安装指南
2.1 安装方式概览

2.2 Windows系统安装
方式一:使用官方安装程序(推荐)

详细步骤
1. 下载安装包
访问 Mosquitto 官方下载页面:
https://mosquitto.org/download/选择 Windows 版本的安装程序(.exe文件)
2. 运行安装程序
双击下载的安装程序,按照向导操作:
# 推荐安装路径C:\Program Files\Mosquitto# 默认端口配置MQTT端口: 1883WebSocket端口: 8083(可选)
3. 配置防火墙
安装完成后,需要配置Windows防火墙允许Mosquitto通信:
# 以管理员身份运行PowerShell# 添加防火墙入站规则New-NetFirewallRule -DisplayName "Mosquitto MQTT" -Direction Inbound -LocalPort 1883 -Protocol TCP -Action Allow# 如果使用WebSocketNew-NetFirewallRule -DisplayName "Mosquitto WebSocket" -Direction Inbound -LocalPort 8083 -Protocol TCP -Action Allow
4. 验证安装
# 检查服务状态Get-Service | Where-Object {(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
2. 安装Mosquitto
# 更新Homebrewbrew update# 安装Mosquittobrew install mosquitto# 验证安装mosquitto --version
3. 启动服务
# 启动Mosquitto服务brew services start mosquitto# 查看服务状态brew services list# 停止服务brew services stop mosquitto# 重启服务brew services restart mosquitto
4. 测试连接
# 订阅测试mosquitto_sub -v -t "test/#"# 发布测试(新终端)mosquitto_pub -t "test/hello" -m "Hello from macOS!"
方式二:从源码编译
# 下载源码cd /tmpwget https://mosquitto.org/files/source/mosquitto-2.0.18.tar.gz# 解压tar -xvzf mosquitto-2.0.18.tar.gzcd mosquitto-2.0.18# 编译安装makesudo make install# 配置动态链接库sudo /usr/bin/install_name_tool -change /usr/local/lib/libmosquitto.1.dylib /usr/local/lib/libmosquitto.1.0.0.dylib /usr/local/bin/mosquitto_pubsudo /usr/bin/install_name_tool -change /usr/local/lib/libmosquitto.1.dylib /usr/local/lib/libmosquitto.1.0.0.dylib /usr/local/bin/mosquitto_sub
2.5 Docker容器化部署
为什么选择Docker?

快速启动

方式一:快速测试(最简单)
# 直接运行官方镜像docker run -it -p 1883:1883 eclipse-mosquitto:2# 后台运行docker run -d -p 1883:1883 --name mosquitto eclipse-mosquitto:2
方式二:自定义配置(推荐)
1. 创建项目目录结构
mkdir -p ~/mosquitto/configmkdir -p ~/mosquitto/datamkdir -p ~/mosquitto/logcd ~/mosquitto
2. 创建配置文件
cat > config/mosquitto.conf << 'EOF'# 监听配置listener 1883allow_anonymous true# 持久化persistence truepersistence_location /mosquitto/data/# 日志log_dest file /mosquitto/log/mosquitto.loglog_dest stdout# 连接配置max_connections -1connection_messages trueEOF
3. 运行容器
docker run -d \--name mosquitto \-p 1883:1883 \-p 9001:9001 \-v ~/mosquitto/config:/mosquitto/config \-v ~/mosquitto/data:/mosquitto/data \-v ~/mosquitto/log:/mosquitto/log \eclipse-mosquitto:2 \-c /mosquitto/config/mosquitto.conf
4. 验证运行
# 查看容器日志docker logs -f mosquitto# 查看容器状态docker ps# 测试连接docker exec -it mosquitto mosquitto_sub -v -t "test/#"
Docker Compose部署(生产推荐)
创建docker-compose.yml
version: '3.8'services:mosquitto:image: eclipse-mosquitto:2container_name: mosquittorestart: unless-stoppedports:- "1883:1883" # MQTT端口- "9001:9001" # WebSocket端口volumes:- ./config:/mosquitto/config- ./data:/mosquitto/data- ./log:/mosquitto/logenvironment:- TZ=Asia/Shanghai# 资源限制deploy:resources:limits:cpus: '1'memory: 512Mreservations:cpus: '0.5'memory: 256M
启动服务
# 启动服务docker-compose up -d# 查看日志docker-compose logs -f# 停止服务docker-compose down# 重启服务docker-compose restart
常用Docker命令

2.6 源码编译安装
编译流程图

Ubuntu/Debian编译
1. 安装编译依赖
sudo apt updatesudo apt install -y \build-essential \libssl-dev \libc-ares-dev \uuid-dev \wget \cmake
2. 下载源码
# 访问 https://mosquitto.org/files/source/ 获取最新版本cd /tmpwget https://mosquitto.org/files/source/mosquitto-2.0.18.tar.gz# 解压tar -xvzf mosquitto-2.0.18.tar.gzcd mosquitto-2.0.18
3. 编译安装
# 配置编译选项cmake -B build \-DCMAKE_INSTALL_PREFIX=/usr \-DWITH_THREADING=ON \-DWITH_TLS=ON \-DWITH_TLS_PSK=ON \-DWITH_BRIDGE=ON# 编译cd buildmake -jMAINPID[Install]WantedBy=multi-user.targetEOF# 重新加载systemdsudo systemctl daemon-reload# 启动服务sudo systemctl start mosquittosudo systemctl enable mosquitto
CentOS/RHEL编译
# 安装依赖sudo yum groupinstall -y "Development Tools"sudo yum install -y openssl-devel c-ares-devel libuuid-devel wget cmake# 下载和编译(与Ubuntu相同步骤)cd /tmpwget https://mosquitto.org/files/source/mosquitto-2.0.18.tar.gztar -xvzf mosquitto-2.0.18.tar.gzcd mosquitto-2.0.18makesudo make installsudo ldconfig
macOS编译
# 安装依赖brew install openssl cmake# 下载源码并编译cd /tmpcurl -O https://mosquitto.org/files/source/mosquitto-2.0.18.tar.gztar -xvzf mosquitto-2.0.18.tar.gzcd mosquitto-2.0.18makesudo make install
2.7 安装验证与测试
完整验证流程
渲染错误: Mermaid 渲染失败: Parse error on line 10: ...ss -->|否| Error[排查故障]) -----------------------^ Expecting 'SQE', 'TAGEND', 'UNICODE_TEXT', 'TEXT', 'TAGSTART', got 'STADIUMEND'
详细验证步骤
1. 版本检查
# 检查Mosquitto版本mosquitto --version# 检查客户端工具版本mosquitto_pub --versionmosquitto_sub --version
2. 服务状态检查
Linux:
# 检查服务状态sudo systemctl status mosquitto# 检查进程ps aux | grep mosquitto# 检查监听端口sudo netstat -tulpn | grep mosquitto# 或sudo ss -tulpn | grep mosquitto
macOS (Homebrew):
brew services list | grep mosquittops aux | grep mosquittolsof -i :1883
Windows:
Get-Service | Where-Object {$_.Name -like "*mosquitto*"}netstat -ano | findstr :1883
Docker:
docker ps | grep mosquittodocker logs mosquitto
3. 连接测试

测试步骤:
# 终端1:启动订阅mosquitto_sub -v -t "test/#"# 终端2:发布消息mosquitto_pub -t "test/hello" -m "Hello Mosquitto!"mosquitto_pub -t "test/world" -m "World of MQTT!"mosquitto_pub -t "test/number" -m "42"# 终端1应该看到:# test/hello Hello Mosquitto!# test/world World of MQTT!# test/number 42
4. 完整功能测试
# 测试QoS级别mosquitto_pub -t "test/qos0" -m "QoS 0" -q 0mosquitto_pub -t "test/qos1" -m "QoS 1" -q 1mosquitto_pub -t "test/qos2" -m "QoS 2" -q 2# 测试保留消息mosquitto_pub -t "test/retained" -m "保留消息" -r# 新终端订阅验证保留消息mosquitto_sub -t "test/retained" -C 1# 测试遗嘱消息(终端3)mosquitto_sub -t "test/will" -i "test_client"# 另一终端连接时设置遗嘱mosquitto_pub -h localhost -t "test/topic" -m "正常消息" \-will-topic "test/will" \-will-payload "客户端异常断开" \-will-qos 1 \-will-retain
5. 检查日志
Linux:
# 查看systemd日志sudo journalctl -u mosquitto -f# 查看配置的日志文件tail -f /var/log/mosquitto/mosquitto.log
Docker:
docker logs -f mosquitto故障排查指南

常见问题解决:
- 端口被占用
# 查找占用端口的进程sudo lsof -i :1883sudo netstat -tulpn | grep :1883# 停止占用进程或修改配置
- 权限问题
# 设置正确的文件权限sudo chown -R mosquitto:mosquitto /etc/mosquittosudo chown -R mosquitto:mosquitto /var/lib/mosquittosudo chown -R mosquitto:mosquitto /var/log/mosquitto
- 配置文件错误
# 测试配置文件mosquitto -c /etc/mosquitto/mosquitto.conf -t
2.8 多实例部署
场景说明

配置示例
实例1配置
# 配置文件sudo cp /etc/mosquitto/mosquitto.conf /etc/mosquitto/mosquitto-1.confsudo cat > /etc/mosquitto/mosquitto-1.conf << 'EOF'listener 1883allow_anonymous truepersistence truepersistence_location /var/lib/mosquitto1/pid_file /var/run/mosquitto1.pidEOF
实例2配置
sudo cat > /etc/mosquitto/mosquitto-2.conf << 'EOF'listener 1884allow_anonymous truepersistence truepersistence_location /var/lib/mosquitto2/pid_file /var/run/mosquitto2.pidEOF
启动多实例
# 创建数据目录sudo mkdir -p /var/lib/mosquitto1 /var/lib/mosquitto2sudo chown mosquitto:mosquitto /var/lib/mosquitto1 /var/lib/mosquitto2# 启动实例1sudo /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto-1.conf -d# 启动实例2sudo /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto-2.conf -d# 验证ps aux | grep mosquitto
2.9 本章小结
安装方式总结
| 包管理器 | |||
| Windows安装包 | |||
| Docker | |||
| 源码编译 |
安装检查清单

下章预告
第3章:MQTT核心概念详解
发布/订阅模式深入讲解 主题设计与通配符使用 QoS质量等级详解 保留消息与遗嘱消息 会话管理机制
🎯 思考与练习
实践题
在你的系统上安装Mosquitto,并完成基本连接测试 使用Docker方式部署Mosquitto,并配置持久化存储 尝试运行多个Mosquitto实例,使用不同端口
进阶题
编写一个自动化安装脚本,实现Mosquitto的一键部署 配置Mosquitto开机自启,并测试重启后的服务状态 对比不同安装方式的资源占用情况
⏭️ 下一章:第3章 MQTT核心概念详解
📚 返回:完整教程目录
夜雨聆风