Гид по технологиям

Установка Apache ActiveMQ на CentOS 8

• 6 min read • Инфраструктура • Обновлено 27 Nov 2025
Apache ActiveMQ на CentOS 8 — установка
Apache ActiveMQ на CentOS 8 — установка

О чём эта инструкция

Apache ActiveMQ — открытый брокер сообщений на Java. Он пересылает сообщения между приложениями, поддерживает очереди и топики, высокую доступность и балансировку нагрузки. Поддерживает клиентов на Java, C/C++, Python, PHP, Perl, Ruby и C#. В статье показано, как развернуть ActiveMQ на CentOS 8, защитить и подключить веб-интерфейсы.

Важно: инструкции рассчитаны на сервер с CentOS 8 и правами root. Команды запускаются в shell на сервере.

Содержание

  • Требования
  • Установка Java
  • Загрузка и установка Apache ActiveMQ
  • Создание systemd-сервиса
  • Настройка пароля администратора
  • Конфигурация Nginx как обратного прокси
  • Настройка SELinux и firewalld
  • Доступ к интерфейсам ActiveMQ и Hawt.io
  • Мониторинг и безопасность
  • Чеклисты ролей и критерии приёмки
  • Частые вопросы

Требования

  • Сервер с CentOS 8 (x86_64). Минимум 1 ГБ RAM, рекомендуется 2+ ГБ для продакшн-нагрузок.
  • Настроен root-пароль или доступ по sudo от пользователя с правами администратора.
  • Открытые порты 80 (HTTP, для Nginx) и 8161 (браузерный интерфейс ActiveMQ) либо только 80 при использовании обратного прокси.

Установка Java

Apache ActiveMQ работает на Java. Установим OpenJDK 11:

dnf install java-11-openjdk-devel -y

Проверьте версию:

java --version

Ожидаемый примерный вывод:

openjdk 11.0.x 20xx-xx-xx
OpenJDK Runtime Environment (build 11.0.x+xx)
OpenJDK 64-Bit Server VM (build 11.0.x+xx, mixed mode)

Если Java не установилась, проверьте подключение к репозиторию и выполните dnf update.

Загрузка и установка Apache ActiveMQ

Загрузите архив ActiveMQ в /opt и распакуйте его. В примере используется версия 5.15.12 — замените URL на актуальную версию при необходимости.

cd /opt
wget https://www.apache.org/dist/activemq/5.15.12/apache-activemq-5.15.12-bin.tar.gz

tar -xvzf apache-activemq-5.15.12-bin.tar.gz
mv apache-activemq-5.15.12 apache-activemq

Создайте отдельного системного пользователя для запуска сервера ActiveMQ и назначьте права на каталог:

useradd activemq
chown -R activemq:activemq /opt/apache-activemq/

Права отдельного пользователя повышают безопасность: процесс ActiveMQ не будет работать от root.

Создание systemd-сервиса для ActiveMQ

Создайте файл службы systemd, чтобы управлять сервером стандартными командами systemctl:

nano /etc/systemd/system/apache-activemq.service

Вставьте следующие строки в файл:

[Unit]
Description=Apache ActiveMQ Messaging Server
After=network.target

[Service]
Type=forking
User=activemq
Group=activemq

ExecStart=/opt/apache-activemq/bin/activemq start
ExecStop=/opt/apache-activemq/bin/activemq stop

[Install]
WantedBy=multi-user.target

Сохраните файл, перезагрузите демон systemd и запустите сервис:

systemctl daemon-reload
systemctl start apache-activemq
systemctl enable apache-activemq
systemctl status apache-activemq

Ожидается статус Active: active (running). Если сервис не стартует, проверьте логи в /opt/apache-activemq/data/activemq.log и системные журналы через journalctl -u apache-activemq.

Проверьте, что ActiveMQ слушает порт 8161:

netstat -antup | grep 8161

Если netstat не установлен, поставьте пакет net-tools или используйте ss:

ss -ltnp | grep 8161

Настройка пароля администратора

По умолчанию логин/пароль admin/admin — это опасно в продакшне. Измените их в файле jetty-realm.properties:

nano /opt/apache-activemq/conf/jetty-realm.properties

Найдите строки и замените пароли на надёжные:

# username: password [,rolename ...]
admin: activemqpassword, admin
user: userpassword, user

После изменения перезапустите сервис:

systemctl restart apache-activemq

Важно: храните пароли в защищённом менеджере паролей. Для интеграции с LDAP/AD или внешними провайдерами аутентификации рассмотрите использование JAAS-конфигурации и шифрование хранилищ.

Настройка Nginx как обратного прокси

Рекомендуется публиковать веб-интерфейс ActiveMQ через Nginx, чтобы обеспечить SSL-терминацию и дополнительный уровень контроля доступа.

Установите Nginx:

dnf install nginx -y

Создайте конфигурацию сайта:

nano /etc/nginx/conf.d/activemq.conf

Пример конфигурации обратного прокси (HTTP):

server {
    listen 80;
    server_name your-server-ip; # замените на DNS или IP
    location / {
        proxy_pass http://127.0.0.1:8161;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
     }
}

Проверьте конфигурацию и перезапустите Nginx:

nginx -t
systemctl start nginx
systemctl enable nginx
systemctl status nginx

Рекомендация: для публичного доступа используйте HTTPS (Let’s Encrypt) и настройте ограничение доступа по IP или базовую аутентификацию для /admin.

Настройка SELinux и брандмауэра (firewalld)

CentOS 8 по умолчанию использует SELinux. Рекомендуется по возможности не отключать SELinux полностью. Вместо этого лучше добавить нужные правила. В простом тестовом окружении можно временно перевести SELinux в режим permissive:

nano /etc/selinux/config
# измените SELINUX=enforcing на
SELINUX=permissive

Для применения перезагрузите систему. Но в продакшне лучше оставлять SELinux включённым и создавать политики для разрешения нужных операций ActiveMQ.

Откройте порты в firewalld:

firewall-cmd --zone=public --permanent --add-port=8161/tcp
firewall-cmd --zone=public --permanent --add-port=80/tcp
firewall-cmd --reload

Если вы используете только Nginx (порт 80/443), можно закрыть 8161 на внешнем интерфейсе и оставлять его доступным только локально.

Доступ к ActiveMQ

Откройте в браузере http://your-server-ip или http://your-domain. Интерфейс ActiveMQ отображает состояние очередей и топиков.

Описание изображения: панель входа ActiveMQ на странице приветствия, показывающая ссылку на административную консоль.

Админ-панель доступна по /admin. Введите изменённые логин/пароль.

Описание изображения: основной интерфейс ActiveMQ с навигацией по очередям и топикам.

Описание изображения: форма входа в административную панель ActiveMQ.

Описание изображения: дашборд ActiveMQ после успешного входа, отображающий состояние брокера и ключевые метрики.

Мониторинг ActiveMQ с помощью Hawt.io

Hawt.io — модульная веб-консоль для управления Java-приложениями и брокерами. Она удобно интегрируется с ActiveMQ.

Скачайте war, распакуйте и переместите в webapps ActiveMQ:

wget https://repo1.maven.org/maven2/io/hawt/hawtio-default/2.9.1/hawtio-default-2.9.1.war
unzip hawtio-default-2.9.1.war -d hawtio
mv hawtio /opt/apache-activemq/webapps/
chown -R activemq:activemq /opt/apache-activemq/webapps/

Измените окружение ActiveMQ, чтобы Hawt.io использовал realm ActiveMQ и роль администраторов:

nano /opt/apache-activemq/bin/env

Найдите строку ACTIVEMQ_OPTS и замените её на:

ACTIVEMQ_OPTS="$ACTIVEMQ_OPTS_MEMORY -Djava.util.logging.config.file=logging.properties -Djava.security.auth.login.config=$ACTIVEMQ_CONF/login.config -Dhawtio.realm=activemq -Dhawtio.role=admins -Dhawtio.rolePrincipalClasses=org.apache.activemq.jaas.GroupPrincipal"

Добавьте контекст Hawt.io в jetty.xml, чтобы приложение было доступно по /hawtio:

nano /opt/apache-activemq/conf/jetty.xml

Добавьте ниже строки :





Перезапустите ActiveMQ:

systemctl restart apache-activemq

Откройте Hawt.io по адресу http://your-server-ip/hawtio и войдите под админом (admin/ваш_пароль).

Описание изображения: страница входа Hawt.io.

Описание изображения: дашборд Hawt.io с мониторингом ActiveMQ.

Рекомендации по безопасности

  • Используйте HTTPS (TLS) на Nginx для публичного доступа. Настройте автоматическое обновление сертификатов (Certbot).
  • Отключите публичный доступ к 8161 и разрешите доступ только через обратный прокси.
  • Используйте сильные пароли и ротацию ключей/паролей.
  • Логируйте и агрегируйте логи ActiveMQ для обнаружения аномалий.
  • Ограничьте доступ к административному интерфейсу по IP и RBAC.
  • Рассмотрите интеграцию с LDAP или OAuth для централизованной аутентификации.

Когда этот подход не подходит

  • Для требовательных к задержке систем (fintech, высокочастотная торговля) может потребоваться специализированное решение с минимальной латентностью.
  • Если требуется встроенная поддержка облачных очередей с SLA, рассмотрите managed-сервисы (e.g., Amazon MQ, Google Cloud Pub/Sub).

Альтернативы

  • RabbitMQ — популярный брокер с поддержкой AMQP.
  • Kafka — для потоковой передачи и обработки больших объёмов данных.
  • ActiveMQ Artemis — следующая генерация ActiveMQ с улучшенной производительностью.

Чеклисты по ролям

Администратор (DevOps):

  • Установить Java и ActiveMQ.
  • Создать systemd-сервис и настроить автозапуск.
  • Настроить брандмауэр и SELinux-полици.
  • Настроить резервное копирование конфигураций.

Разработчик:

  • Проверить подключение клиента к брокеру.
  • Написать тесты отправки и получения сообщений.
  • Протестировать устойчивость при перезапуске брокера.

Оператор (SRE):

  • Настроить мониторинг и алерты (CPU, heap, GC, очереди).
  • Проверить retention и policy для сообщений.
  • Провести нагрузочное тестирование.

Критерии приёмки

  • ActiveMQ успешно запускается и держится в статусе active (systemctl status).
  • Веб-интерфейс доступен через Nginx по HTTPS (если настроен).
  • Админ-учётные данные изменены и работают.
  • Пассивный тест отправки и приёма сообщений проходит (пример тест-кейса ниже).

Пример тест-кейса (проверка работоспособности)

  1. Отправить тестовое сообщение в очередь test-queue.
  2. Убедиться, что сообщение появилось в интерфейсе админа.
  3. Получить сообщение через клиент и подтвердить получение.
  4. Убедиться, что очередь пуста.

При успешном выполнении всех шагов — тест пройден.

Быстрая шпаргалка команд

  • Старт/стоп/статус ActiveMQ:
systemctl start apache-activemq
systemctl stop apache-activemq
systemctl restart apache-activemq
systemctl status apache-activemq
  • Логи:
journalctl -u apache-activemq --no-pager
tail -f /opt/apache-activemq/data/activemq.log
  • Проверка портов:
ss -ltnp | grep 8161
  • Брандмауэр:
firewall-cmd --zone=public --permanent --add-port=8161/tcp
firewall-cmd --reload

Частые проблемы и как их решать

  • Сервис не стартует: проверьте права каталога /opt/apache-activemq, присутствие java в PATH и логи /opt/apache-activemq/data/activemq.log.
  • Порт 8161 недоступен снаружи: убедитесь, что firewalld разрешил порт и что нет внешнего NAT или облачного правила блокировки.
  • Hawt.io не доступен: проверьте, что webapps/hawtio присутствует и что jetty.xml содержит нужный WebAppContext.

FAQ

Q: Как сменить порт 8161? A: Измените настройку в /opt/apache-activemq/conf/jetty.xml или параметрах запуска и перезапустите сервис.

Q: Можно ли запустить ActiveMQ как контейнер Docker? A: Да. Официальные и сообщественные образы ActiveMQ доступны. В контейнерной среде полезно вынести конфигурацию и данные в тома.

Q: Как настроить SSL между клиентами и брокером? A: Настройте SSL-коннекторы в конфиге ActiveMQ (conf/activemq.xml), подготовьте keystore/truststore и укажите параметры sslContext.

Заключение

Вы успешно установили и настроили Apache ActiveMQ на CentOS 8. В следующем шаге рекомендуется настроить HTTPS для Nginx, интегрировать централизованную аутентификацию и настроить мониторинг с алертами для ключевых метрик.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро