乐于分享
好东西不私藏

第2章 Mosquitto安装指南

第2章 Mosquitto安装指南

第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:2    container_name: mosquitto    restart: unless-stopped    ports:      - "1883:1883"   # MQTT端口      - "9001:9001"   # WebSocket端口    volumes:      - ./config:/mosquitto/config      - ./data:/mosquitto/data      - ./log:/mosquitto/log    environment:      - TZ=Asia/Shanghai    # 资源限制    deploy:      resources:        limits:          cpus: '1'          memory: 512M        reservations:          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

故障排查指南

常见问题解决:

  1. 端口被占用
# 查找占用端口的进程sudo lsof -i :1883sudo netstat -tulpn | grep :1883# 停止占用进程或修改配置
  1. 权限问题
# 设置正确的文件权限sudo chown -R mosquitto:mosquitto /etc/mosquittosudo chown -R mosquitto:mosquitto /var/lib/mosquittosudo chown -R mosquitto:mosquitto /var/log/mosquitto
  1. 配置文件错误
# 测试配置文件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安装包
⭐ 简单
Windows用户
⭐⭐⭐⭐⭐
Docker
⭐⭐ 中等
快速部署、隔离
⭐⭐⭐⭐⭐
源码编译
⭐⭐⭐ 较难
生产环境、定制
⭐⭐⭐

安装检查清单

下章预告

第3章:MQTT核心概念详解

  • 发布/订阅模式深入讲解
  • 主题设计与通配符使用
  • QoS质量等级详解
  • 保留消息与遗嘱消息
  • 会话管理机制

🎯 思考与练习

实践题

  1. 在你的系统上安装Mosquitto,并完成基本连接测试
  2. 使用Docker方式部署Mosquitto,并配置持久化存储
  3. 尝试运行多个Mosquitto实例,使用不同端口

进阶题

  1. 编写一个自动化安装脚本,实现Mosquitto的一键部署
  2. 配置Mosquitto开机自启,并测试重启后的服务状态
  3. 对比不同安装方式的资源占用情况

⏭️ 下一章:第3章 MQTT核心概念详解

📚 返回:完整教程目录

相关学习资料