Установка 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 (если настроен).
- Админ-учётные данные изменены и работают.
- Пассивный тест отправки и приёма сообщений проходит (пример тест-кейса ниже).
Пример тест-кейса (проверка работоспособности)
- Отправить тестовое сообщение в очередь test-queue.
- Убедиться, что сообщение появилось в интерфейсе админа.
- Получить сообщение через клиент и подтвердить получение.
- Убедиться, что очередь пуста.
При успешном выполнении всех шагов — тест пройден.
Быстрая шпаргалка команд
- Старт/стоп/статус 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, интегрировать централизованную аутентификацию и настроить мониторинг с алертами для ключевых метрик.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента