新手求CentOS搭建Apollo MQTT的详细步骤教程?

在物联网和实时消息通信领域,MQTT 协议因其轻量级、高效和发布/订阅模式而备受青睐,Apollo MQTT(现项目已演进为 ActiveMQ Artemis,但 Apollo 仍因其稳定性和易用性被广泛使用)是一个功能强大、高性能的开源消息代理,本文将详细介绍如何在 CentOS 系统上从零开始搭建一个 Apollo MQTT 服务,涵盖环境准备、安装配置、服务管理及连接测试等关键步骤。

新手求CentOS搭建Apollo MQTT的详细步骤教程?

准备工作

在开始安装之前,确保您的系统满足以下基本条件:

  • 操作系统:一台安装了 CentOS 7 或 CentOS 8 的服务器。
  • 权限:拥有 root 权限或具有 sudo 权限的普通用户。
  • Java 环境:Apollo 是基于 Java 构建的,因此系统必须安装 Java 运行环境(JRE)或 Java 开发工具包(JDK),推荐使用 OpenJDK 8 或 11 版本。

您可以通过以下命令检查是否已安装 Java:

java -version

如果尚未安装,可以使用 yum 包管理器快速安装 OpenJDK:

# 对于 CentOS 7
sudo yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel
# 对于 CentOS 8
sudo dnf install -y java-11-openjdk java-11-openjdk-devel

安装完成后,再次运行 java -version 确认安装成功。

下载与安装 Apollo

Apollo 的官方发布版是一个二进制压缩包,我们只需下载、解压即可完成“安装”。

  1. 下载 Apollo
    Apollo 的原始下载链接可能已不易寻找,但您可以从 Apache 的归档库或其他可信的软件源获取,这里以一个示例版本为例(请根据实际情况替换为最新或稳定版本的链接):

    cd /usr/local/src
    wget http://archive.apache.org/dist/activemq/activemq-apollo/1.7.1/apollo-unix-distribution-1.7.1.tar.gz
  2. 解压与部署
    将下载的压缩包解压,并将其移动到一个规范化的目录,/opt

    tar -xzf apollo-unix-distribution-1.7.1.tar.gz
    sudo mv apollo-unix-distribution-1.7.1 /opt/apollo

    至此,Apollo 程序文件已部署到 /opt/apollo 目录下。

创建与配置 Broker 实例

Apollo 采用了“实例”的概念来管理多个独立的 Broker,每个实例都有自己独立的配置、日志和数据存储。

  1. 创建实例
    使用 apollo create 命令来创建一个新的 Broker 实例,我们将其命名为 mybroker

    cd /opt/apollo
    sudo ./bin/apollo create /opt/apollo/mybroker

    执行后,系统会在 /opt/apollo/mybroker 目录下生成一套完整的实例文件结构,主要包括:

    • bin/:存放该实例的启动、停止等管理脚本。
    • etc/:存放核心配置文件,如 apollo.xmlusers.properties
    • data/:存储消息、KahaDB 数据库等。
    • log/:存放运行日志。
  2. 配置实例
    实例的核心配置文件是 /opt/apollo/mybroker/etc/apollo.xml,我们需要对其进行一些基本修改,以启用 MQTT 服务并允许远程连接。

    新手求CentOS搭建Apollo MQTT的详细步骤教程?

    使用 vinano 编辑器打开该文件:

    sudo vi /opt/apollo/mybroker/etc/apollo.xml

    主要关注 <acceptor> 配置项,默认情况下,它可能只监听本地回环地址,为了允许其他设备连接,需要将其修改为监听所有网络接口。

    找到类似下面的配置行:

    <acceptor>tcp://0.0.0.0:61613</acceptor>
    • tcp://:表示使用 TCP 协议。
    • 0.0.0:表示监听服务器上所有的网络接口卡,这是实现远程访问的关键。
    • 61613:这是 Apollo 默认的 MQTT 协议端口。

    如果您希望启用用户名和密码认证,可以编辑 /opt/apollo/mybroker/etc/users.properties 文件,其格式为 用户名=密码,添加一个用户 admin

    admin=password123

    保存文件后,Apollo 将会使用此文件进行简单的用户认证。

启动与管理服务

为了方便管理,我们推荐将 Apollo 配置为系统服务,使用 systemd 进行管理。

  1. 创建 systemd 服务文件
    创建一个新的服务单元文件:

    sudo vi /etc/systemd/system/apollo.service

    粘贴到文件中,请确保路径与您的实际安装路径一致。

    [Unit]
    Description=Apache Apollo MQTT Broker
    After=network.target
    [Service]
    Type=forking
    User=root
    Group=root
    ExecStart=/opt/apollo/mybroker/bin/apollo-broker-service start
    ExecStop=/opt/apollo/mybroker/bin/apollo-broker-service stop
    ExecReload=/opt/apollo/mybroker/bin/apollo-broker-service restart
    PIDFile=/opt/apollo/mybroker/data/apollo.pid
    Restart=on-failure
    RestartSec=5
    [Install]
    WantedBy=multi-user.target
  2. 启用并启动服务
    重新加载 systemd 配置,然后设置 Apollo 服务开机自启,并立即启动它。

    sudo systemctl daemon-reload
    sudo systemctl enable apollo.service
    sudo systemctl start apollo.service
  3. 检查服务状态
    使用以下命令查看 Apollo 服务的运行状态,确认其正常运行:

    sudo systemctl status apollo.service

    如果看到 active (running) 的绿色字样,说明服务已成功启动,可以查看日志文件排查潜在问题:

    tail -f /opt/apollo/mybroker/log/apollo.log

连接测试

服务器搭建完成后,最后一步是验证客户端能否正常连接和通信,我们可以使用 mosquitto 客户端工具进行测试。

新手求CentOS搭建Apollo MQTT的详细步骤教程?

  1. 安装 mosquitto 客户端

    # 对于 CentOS 7
    sudo yum install -y mosquitto-clients
    # 对于 CentOS 8,可能需要启用 EPEL 仓库
    sudo dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
    sudo dnf install -y mosquitto-clients
  2. 执行测试
    假设您的服务器 IP 地址为 168.1.100

    • 开启一个订阅者终端:订阅主题 test/topic

      mosquitto_sub -h 192.168.1.100 -p 61613 -t "test/topic" -u admin -P password123
      • -h:指定服务器地址。
      • -p:指定端口。
      • -t:指定订阅主题。
      • -u-P:指定用户名和密码(如果配置了认证)。
    • 开启另一个发布者终端:向 test/topic 主题发送一条消息。

      mosquitto_pub -h 192.168.1.100 -p 61613 -t "test/topic" -m "Hello from CentOS Apollo!"
      • -m:指定消息内容。

    当您在发布者终端执行命令后,订阅者终端应该会立即收到 Hello from CentOS Apollo! 这条消息,这证明您的 Apollo MQTT 服务器已经成功搭建并运行。


相关问答 FAQs

Q1: 为什么我的客户端无法连接到 Apollo MQTT 服务器,总是提示超时或连接被拒绝?

A1: 这是一个常见的网络问题,请从以下几个方面排查:

  1. 防火墙:CentOS 默认的 firewalld 可能会阻止 61613 端口,请执行以下命令开放端口:
    sudo firewall-cmd --permanent --add-port=61613/tcp
    sudo firewall-cmd --reload
  2. 服务状态:确认 Apollo 服务确实在运行,使用 sudo systemctl status apollo.service 检查。
  3. 监听地址:再次检查 apollo.xml 中的 <acceptor> 配置,确保是 0.0.0 而不是 0.0.1
  4. IP 地址和端口:确保客户端连接的服务器 IP 地址和端口号(61613)完全正确,没有拼写错误。
  5. 认证信息:如果启用了认证,请确保客户端提供的用户名和密码与 users.properties 文件中的完全一致。

Q2: Apollo 和 ActiveMQ Artemis 有什么区别?对于新项目,我应该选择哪个?

A2: Apollo 和 ActiveMQ Artemis 都是 Apache 出品的优秀消息中间件,但它们代表了不同的技术代。

  • Apollo:是早期的项目,代码库基于 ActiveMQ 5.x 的核心,它非常稳定、成熟,配置相对简单,目前该项目已进入维护模式,不再有重大的新功能开发。
  • ActiveMQ Artemis:是 Apollo 的继任者,也是一个从 HornetQ 项目捐赠而来的下一代消息代理,它采用了全新的、异步内核,提供了更高的性能、更低的延迟和更丰富的功能(如更好的集群支持、AMQP 协议的原生支持等),Artemis 是目前社区和 Apache 基金会主推和积极开发的项目。

如果您正在维护一个基于 Apollo 的旧系统,继续使用 Apollo 是完全可行的,但对于任何新项目,强烈推荐选择 ActiveMQ Artemis,它不仅性能更强,而且拥有活跃的社区支持和持续的更新,能更好地满足未来的需求,本文的搭建流程与 Artemis 有相似之处,但配置细节和命令有所不同。

【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

(0)
热舞的头像热舞
上一篇 2025-10-15 12:19
下一篇 2025-10-15 12:25

相关推荐

  • 如何在centos 7上安装配置并开始使用mysql?

    安装 MySQLCentOS 7 默认的 yum 源中不包含 MySQL Community Server,因此我们需要首先添加官方的 Yum 软件源,下载并安装 MySQL Yum 仓库访问 MySQL 官方网站获取适合 CentOS 7 的 Yum 仓库下载链接,然后使用 wget 命令下载,wget ht……

    2025-10-03
    003
  • 分库分表策略_MySQL分库分表迁移到DDM

    DDM(Distributed Database Management)是MySQL的分布式数据库管理系统,用于实现分库分表。迁移到DDM需要进行数据迁移、配置修改和性能优化等步骤。

    2024-06-29
    0011
  • CentOS根目录下各个文件夹分别代表什么含义?

    在Linux世界中,CentOS因其稳定性、可靠性和企业级的特性而备受青睐,它的文件系统结构遵循Linux文件系统层次结构标准(FHS),这是一个规范了目录和文件存放位置的约定,旨在让用户和程序能够预测到重要文件的位置,理解这些目录的用途,是有效管理和维护CentOS系统的基石,本文将详细介绍CentOS中最重……

    2025-10-11
    005
  • CentOS 6.5没有updategrub命令,该如何更新GRUB配置?

    在CentOS 6.5这样的经典Linux发行版中,系统管理的关键在于理解其底层工具的运作方式,当用户习惯于现代发行版(如Ubuntu或CentOS 7/8)中的update-grub命令后,在CentOS 6.5上寻找并使用updategrub时,往往会遇到困惑,这是因为CentOS 6.5使用的是一个完全不……

    2025-10-08
    004

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

广告合作

QQ:14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信