CentOS 6.5如何从零开始安装配置ActiveMQ?

在遗留系统维护和特定企业环境中,在 CentOS 6.5 这样一个经典且稳定的操作系统上部署 Apache ActiveMQ 依然是一个常见的需求,ActiveMQ 作为一个功能强大、开源的消息中间件,能够有效地解耦应用组件,提高系统的异步处理能力和可伸缩性,本文将详细介绍在 CentOS 6.5 环境下安装、配置和管理 ActiveMQ 的完整流程,旨在为系统管理员和开发人员提供一份清晰、实用的操作指南。

CentOS 6.5如何从零开始安装配置ActiveMQ?

环境准备与前置条件

在开始安装 ActiveMQ 之前,必须确保系统环境满足其运行的基本要求,ActiveMQ 是基于 Java 开发的,因此一个稳定可靠的 Java 运行环境(JRE)或开发工具包(JDK)是必不可少的。

我们需要检查系统中是否已经安装了 Java,并确认其版本,ActiveMQ 5.x 版本通常要求 JDK 1.7 或更高版本,可以通过以下命令进行验证:

java -version

如果系统返回了类似 openjdk version "1.8.0_xxx" 的信息,说明 Java 环境已就绪,如果未安装或版本过低,我们可以使用 CentOS 6.5 的 yum 包管理器来安装 OpenJDK,推荐安装 JDK 而非 JRE,因为某些管理脚本或工具可能需要 javac 等开发工具。

sudo yum install java-1.8.0-openjdk-devel

安装完成后,再次执行 java -version 确认安装成功,为了方便后续操作,建议配置 JAVA_HOME 环境变量,可以通过编辑 /etc/profile 文件来实现,在文件末尾添加以下内容:

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export PATH=$PATH:$JAVA_HOME/bin

保存文件后,执行 source /etc/profile 使配置立即生效。

下载与安装 ActiveMQ

ActiveMQ 的官方发布包是独立的二进制压缩包,解压即可使用,无需复杂的编译安装过程。

  1. 下载 ActiveMQ:访问 Apache ActiveMQ 官方网站或其归档页面,获取稳定版本的下载链接,以 ActiveMQ 5.15.9 为例,可以使用 wget 命令直接下载到服务器。

    wget http://archive.apache.org/dist/activemq/5.15.9/apache-activemq-5.15.9-bin.tar.gz
  2. 解压与部署:将下载的压缩包解压,并移动到一个规范的目录,/opt。

    tar -zxvf apache-activemq-5.15.9-bin.tar.gz
    sudo mv apache-activemq-5.15.9 /opt/activemq

至此,ActiveMQ 的安装工作已经完成,所有相关的程序文件、配置文件和脚本都位于 /opt/activemq 目录下。

核心配置解析

ActiveMQ 的核心配置文件是 /opt/activemq/conf/activemq.xml,在首次启动前,了解并适当修改此文件中的关键配置项至关重要。

传输连接器

transportConnectors 部分定义了客户端可以用来连接 ActiveMQ 的协议和端口,默认配置包含了多种主流协议。

协议 端口 描述
Openwire 61616 ActiveMQ 的核心二进制协议,性能最高。
AMQP 5672 高级消息队列协议,支持跨平台。
STOMP 61613 简单文本协议,易于多种语言客户端实现。
MQTT 1883 轻量级协议,适用于物联网和移动设备。
WS 61614 WebSocket 协议,用于浏览器端连接。

根据实际应用需求,可以禁用不需要的协议以减少资源占用和潜在的安全风险。

消息持久化

为了防止服务器重启或意外宕机导致消息丢失,ActiveMQ 提供了消息持久化机制,默认使用的是 KahaDB,它是一个高性能、基于文件的嵌入式数据库。

在 activemq.xml 中,持久化适配器的配置如下:

CentOS 6.5如何从零开始安装配置ActiveMQ?

<persistenceAdapter>
    <kahaDB directory="${activemq.data}/kahadb"/>
</persistenceAdapter>

${activemq.data} 变量默认指向 /opt/activemq/data 目录,这意味着所有持久化消息都会存储在 /opt/activemq/data/kahadb 目录下,在生产环境中,建议将此目录挂载到性能更优、可靠性更高的独立磁盘分区上。

简单认证

默认情况下,ActiveMQ 的连接和 Web 控制台都是开放的,这在生产环境中是极不安全的,最简单的安全措施是启用简单认证插件,这需要修改 activemq.xml,在 <broker> 标签内添加以下配置:

<plugins>
    <simpleAuthenticationPlugin>
        <users>
            <authenticationUser username="system" password="manager" groups="users,admins"/>
            <authenticationUser username="user" password="password" groups="users"/>
            <authenticationUser username="guest" password="password" groups="guests"/>
        </users>
    </simpleAuthenticationPlugin>
</plugins>

编辑 /opt/activemq/conf/login.config 文件,确保 propertiesLogin 模块指向正确的用户属性文件。

启动、停止与管理

ActiveMQ 提供了便捷的脚本用于管理其生命周期,这些脚本位于 /opt/activemq/bin/ 目录下。

  • 启动 ActiveMQ:

    /opt/activemq/bin/activemq start
  • 检查运行状态:

    /opt/activemq/bin/activemq status
  • 停止 ActiveMQ:

    /opt/activemq/bin/activemq stop

启动后,可以通过查看日志文件来监控运行情况或排查问题:

tail -f /opt/activemq/data/activemq.log

访问 Web 管理控制台

ActiveMQ 内置了一个功能强大的 Web 管理控制台,极大地简化了队列、主题、连接和消息的监控与管理。

在浏览器中访问 http://<服务器IP地址>:8161/admin,默认情况下,控制台端口为 8161,如果启用了简单认证,系统会提示输入用户名和密码,在默认的 conf/users.properties 文件中,管理员账户为 admin,密码为 admin。

登录后,你可以直观地看到消息代理的运行状态,包括:

  • Queues:查看所有队列中的消息数量、消费者数量等。
  • Topics:监控主题的订阅者和消息分发情况。
  • Connections:管理当前连接到代理的客户端。
  • Browse:浏览队列中的具体消息内容(非持久化消息可能无法浏览)。

配置为系统服务(开机自启)

为了确保 ActiveMQ 能够随系统自动启动,并将其作为标准系统服务进行管理,我们需要为其创建一个 init 脚本。

  1. 创建服务脚本文件:

    sudo vi /etc/init.d/activemq
  2. 将以下脚本内容粘贴到文件中,请根据你的实际安装路径调整 ACTIVEMQ_HOME 和 ACTIVEMQ_USER 变量。

    CentOS 6.5如何从零开始安装配置ActiveMQ?

    #!/bin/sh
    #
    # /etc/init.d/activemq
    #
    # chkconfig: 2345 63 37
    # description: activemq message broker
    # processname: activemq
    # Source function library.
    . /etc/rc.d/init.d/functions
    # set variables
    ACTIVEMQ_USER=root
    ACTIVEMQ_HOME=/opt/activemq
    ACTIVEMQ_CONFIG=$ACTIVEMQ_HOME/conf
    ACTIVEMQ_DATA=$ACTIVEMQ_HOME/data
    prog=activemq
    pidfile=${ACTIVEMQ_DATA}/activemq.pid
    lockfile=${ACTIVEMQ_DATA}/activemq.lck
    start() {
        echo -n $"Starting $prog: "
        daemon --user "$ACTIVEMQ_USER" --pidfile="$pidfile" "$ACTIVEMQ_HOME/bin/activemq" start
        RETVAL=$?
        echo
        [ $RETVAL = 0 ] && touch ${lockfile}
        return $RETVAL
    }
    stop() {
        echo -n $"Stopping $prog: "
        daemon --user "$ACTIVEMQ_USER" --pidfile="$pidfile" "$ACTIVEMQ_HOME/bin/activemq" stop
        RETVAL=$?
        echo
        [ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}
        return $RETVAL
    }
    status() {
        # Check for existence of the pid file
        if [ -f $pidfile ]; then
          # The process is running
          echo "$prog is running (pid `cat $pidfile`)"
          exit 0
        else
          # The process is not running
          echo "$prog is not running"
          exit 1
        fi
    }
    case "$1" in
        start)
            start
            ;;
        stop)
            stop
            ;;
        status)
            status
            ;;
        restart)
            stop
            start
            ;;
        *)
            echo "Usage: {start|stop|status|restart}"
            exit 1
            ;;
    esac
    exit $RETVAL
  3. 设置脚本权限并添加到系统服务:

    sudo chmod +x /etc/init.d/activemq
    sudo chkconfig --add activemq
    sudo chkconfig activemq on

你可以使用标准的 service 命令来管理 ActiveMQ 了:

sudo service activemq start
sudo service activemq stop
sudo service activemq status

相关问答 (FAQs)

问题1:忘记了 Web 控制台的管理员密码怎么办?

解答: 这是非常常见的情况,ActiveMQ 的用户认证信息(默认情况下)存储在纯文本文件中,重置密码非常简单。

  1. 使用 SSH 登录到运行 ActiveMQ 的服务器。
  2. 编辑用户属性文件:vi /opt/activemq/conf/users.properties。
  3. 在文件中找到 admin=admin 这一行,它表示 用户名=密码,将其修改为你想要的新密码,admin=myNewSecretPassword。
  4. 保存文件并退出编辑器。
  5. 重启 ActiveMQ 服务以使更改生效:sudo service activemq restart。
  6. 你就可以使用新密码 myNewSecretPassword 登录 Web 控制台了。

问题2:如何修改 ActiveMQ 的消息持久化存储路径?

解答: 在生产环境中,将持久化数据存储在独立的、高性能的磁盘上是最佳实践,修改存储路径的步骤如下:

  1. 确保新的目标目录已经创建,ActiveMQ 运行用户(root)对该目录有读写权限,我们想将其移动到 /data/activemq/kahadb。

    sudo mkdir -p /data/activemq/kahadb
    sudo chown -R root:root /data/activemq
  2. 编辑 ActiveMQ 的核心配置文件:vi /opt/activemq/conf/activemq.xml。

  3. 找到 <persistenceAdapter> 部分,修改 <kahaDB> 标签的 directory 属性。

    <!-- 原始配置 -->
    <kahaDB directory="${activemq.data}/kahadb"/>
    <!-- 修改后的配置 -->
    <kahaDB directory="/data/activemq/kahadb"/>
  4. 保存文件并退出。

  5. 如果旧的 /opt/activemq/data/kahadb 目录中已有需要保留的数据,请先停止 ActiveMQ,然后将整个 kahadb 目录下的所有文件复制到新目录 /data/activemq/kahadb 中。

  6. 重启 ActiveMQ 服务:sudo service activemq restart。
    重启后,ActiveMQ 就会将所有新的持久化消息写入到新的存储路径中。

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

赞 (0)
爱国的头像爱国
CentOS tmp目录占用空间大,如何设置自动清理?
上一篇 2025-10-06 03:02
CentOS如何禁用rm -rf命令以防数据被误删除?
下一篇 2025-10-06 03:04

相关推荐

发表回复

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

广告合作

QQ:14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

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

关注微信