Cómo instalar Apache ActiveMQ y Hawt.io en CentOS 8

Apache ActiveMQ es un broker de mensajes gratuito, de código abierto y basado en Java que puede utilizarse para enviar mensajes entre dos aplicaciones. Ofrece muchas características, entre ellas, alta disponibilidad y equilibrio de carga de mensajes para tus datos. También es compatible con varios lenguajes cliente y protocolos, como Java, C, C++, Python, PHP, Perl, Ruby y C#. Traduce los mensajes del emisor al receptor y permite mantener los mensajes en cola.

En este tutorial, aprenderemos a instalar Apache ActiveMQ en CentOS 8.

Requisitos previos

  • Un servidor que ejecute CentOS 8.
  • Una contraseña de root configurada en tu servidor.

Instalar Java

Apache ActiveMQ es una aplicación basada en Java, por lo que Java debe estar instalado en tu sistema. Si no está instalado, puedes instalarlo con el siguiente comando:

dnf install java-11-openjdk-devel -y

Después de instalar Java, verifica la versión instalada de Java con el siguiente comando:

java --version

Deberías obtener la siguiente salida:

openjdk 11.0.6 2020-01-14 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.6+10-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.6+10-LTS, mixed mode, sharing)

Instalar y configurar Apache ActiveMQ

En primer lugar, tendrás que descargar la última versión de ActiveMQ desde su sitio web oficial. Puedes descargarla con el siguiente comando:

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

Una vez descargado, extrae el archivo descargado con el siguiente comando:

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

A continuación, renombra el directorio extraído apache-activemq con el siguiente comando:

mv apache-activemq-5.15.12 apache-activemq

A continuación, es conveniente crear un usuario distinto para Apache ActiveMQ. Puedes crear un nuevo usuario llamado activemq con el siguiente comando:

useradd activemq

A continuación, cambia la propiedad del directorio apache-activemq a activemq:

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

Una vez que hayas terminado, puedes pasar al siguiente paso.

Crear un archivo de servicio Systemd para ActiveMQ

A continuación, tendrás que crear un archivo de servicio systemd para gestionar el servicio Apache ActiveMQ. Puedes crearlo con el siguiente comando:

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

Añade las siguientes líneas:

[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

Guarda y cierra el archivo cuando hayas terminado. A continuación, recarga el demonio systemd con el siguiente comando

systemctl daemon-reload

A continuación, inicia el servicio ActiveMQ y permite que se inicie tras el reinicio del sistema con el siguiente comando:

systemctl start apache-activemq
systemctl enable apache-activemq

Puedes verificar el estado del servicio ActiveMQ con el siguiente comando:

systemctl status apache-activemq

Deberías ver la siguiente salida:

? apache-activemq.service - Apache ActiveMQ Messaging Server
   Loaded: loaded (/etc/systemd/system/apache-activemq.service; disabled; vendor preset: disabled)
   Active: active (running) since Thu 2020-03-26 10:15:32 EDT; 12s ago
  Process: 9005 ExecStart=/opt/apache-activemq/bin/activemq start (code=exited, status=0/SUCCESS)
 Main PID: 9057 (java)
    Tasks: 49 (limit: 25028)
   Memory: 197.5M
   CGroup: /system.slice/apache-activemq.service
           ??9057 /usr/bin/java -Xms64M -Xmx1G -Djava.util.logging.config.file=logging.properties -Djava.security.auth.login.config=/opt/apach>

Mar 26 10:15:32 centos8 systemd[1]: Starting Apache ActiveMQ Messaging Server...
Mar 26 10:15:32 centos8 activemq[9005]: INFO: Loading '/opt/apache-activemq//bin/env'
Mar 26 10:15:32 centos8 activemq[9005]: INFO: Using java '/usr/bin/java'
Mar 26 10:15:32 centos8 activemq[9005]: INFO: Starting - inspect logfiles specified in logging.properties and log4j.properties to get details
Mar 26 10:15:32 centos8 activemq[9005]: INFO: pidfile created : '/opt/apache-activemq//data/activemq.pid' (pid '9057')
Mar 26 10:15:32 centos8 systemd[1]: Started Apache ActiveMQ Messaging Server.

Por defecto, Apache ActiveMQ escucha en el puerto 8161. Puedes comprobarlo con el siguiente comando:

netstat -antup | grep 8161

Deberías obtener la siguiente salida:

tcp6       0      0 :::8161                 :::*                    LISTEN      9289/java 

Establecer la contraseña del administrador de Apache ActiveMQ

Por defecto, el nombre de usuario y la contraseña del administrador de Apache ActiveMQ están configurados como admin/admin. Es muy peligroso por razones de seguridad. Así que se recomienda cambiarlo por una contraseña segura.

Puedes cambiarla editando el siguiente archivo:

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

Cambia las siguientes líneas con la contraseña que desees:

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

Guarda y cierra el archivo cuando hayas terminado. A continuación, reinicia el servicio ActiveMQ para aplicar los cambios:

systemctl restart apache-activemq

Una vez que hayas terminado, puedes pasar al siguiente paso.

Configurar Nginx como proxy inverso para Apache ActiveMQ

A continuación, se recomienda configurar Nginx como proxy inverso para ActiveMQ.

Primero, instala el servidor web Nginx con el siguiente comando:

dnf install nginx -y

Una vez instalado Nginx, crea un nuevo archivo de configuración del host virtual Nginx con el siguiente comando:

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

Añade las siguientes líneas:

server {
    listen 80;
    server_name your-server-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;
     }
}

Guarda y cierra el archivo cuando hayas terminado. A continuación, comprueba si Nginx tiene algún error de sintaxis con el siguiente comando

nginx -t

Deberías ver la siguiente salida:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Por último, inicia el servicio Nginx y permite que se inicie tras el reinicio del sistema con el siguiente comando:

systemctl start nginx
systemctl enable nginx

También puedes verificar el estado de Nginx con el siguiente comando:

systemctl status nginx

Deberías ver la siguiente salida:

? nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
   Active: active (running) since Thu 2020-03-26 10:27:45 EDT; 1min 9s ago
  Process: 9984 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
  Process: 9982 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
  Process: 9980 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
 Main PID: 9985 (nginx)
    Tasks: 3 (limit: 25028)
   Memory: 5.5M
   CGroup: /system.slice/nginx.service
           ??9985 nginx: master process /usr/sbin/nginx
           ??9986 nginx: worker process
           ??9987 nginx: worker process

Mar 26 10:27:44 centos8 systemd[1]: Starting The nginx HTTP and reverse proxy server...

Configurar SELinux y el cortafuegos

Por defecto, SELinux está activado en CentOS 8. Se recomienda desactivar SELinux para que Apache ActiveMQ funcione correctamente.

Puedes desactivar SELinux editando el archivo /etc/selinux/config:

nano /etc/selinux/config

Busca la siguiente línea:

SELINUX=enforcing

Y, sustitúyela por la siguiente línea:

SELINUX=permissive

Guarda y cierra el archivo. A continuación, reinicia tu sistema para aplicar los cambios:

A continuación, tendrás que permitir los puertos 80 y 8161 a través de firewalld. Puedes permitirlos con el siguiente comando:

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

A continuación, recarga el firewalld para aplicar los cambios:

firewall-cmd --reload

Una vez que hayas terminado, puedes pasar al siguiente paso.

Acceder a Apache ActiveMQ

En este punto, Apache ActiveMQ está instalado y configurado.

Ahora, abre tu navegador web y escribe la URL http://your-server-ip. Deberías ver la siguiente página:

ActiveMQ

También puedes acceder a la interfaz de administración de Apache ActiveMQ visitando la URL http://your-server-ip/admin. Serás redirigido a la siguiente página:

Accede a

Proporciona tu nombre de usuario y contraseña de administrador y haz clic en el botón Iniciar sesión. Deberías ver la interfaz de administración de Apache ActiveMQ en la siguiente página:

Panel de control de ActiveMQ

Monitorizar ActiveMQ con Hawt.io

También puedes monitorizar tu Apache ActiveMQ con Hawt.io. Hawt.io es una consola web modular para gestionar tu aplicación basada en Java. Es una consola de gestión enchufable que soporta cualquier tipo de JVM, cualquier tipo de contenedor, incluyendo, Tomcat, Jetty, Karaf, JBoss y muchos más.

Primero, descarga la última versión del archivo war de Hawt.io con el siguiente comando:

wget https://repo1.maven.org/maven2/io/hawt/hawtio-default/2.9.1/hawtio-default-2.9.1.war

A continuación, extrae el archivo descargado con el siguiente comando:

unzip hawtio-default-2.9.1.war -d hawtio

A continuación, mueve el directorio extraído al directorio webapps con el siguiente comando:

mv hawtio /opt/apache-activemq/webapps/

A continuación, cambia la propiedad del directorio webapps a activemq con el siguiente comando:

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

A continuación, edita el archivo de entorno de Apache ActiveMQ y realiza algunos cambios:

nano /opt/apache-activemq/bin/env

Busca la siguiente línea:

ACTIVEMQ_OPTS="$ACTIVEMQ_OPTS_MEMORY -Djava.util.logging.config.file=logging.properties -Djava.security.auth.login.config=$ACTIVEMQ_CONF/login.config"

Sustitúyela por la siguiente línea:

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"

Guarda y cierra el archivo cuando hayas terminado. A continuación, abre el archivo jetty.xml:

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

Añade la siguiente línea debajo de la línea <ref bean=»rewriteHandler»>:

<bean class="org.eclipse.jetty.webapp.WebAppContext">
<property name="contextPath" value="/hawtio" />
<property name="resourceBase" value="${activemq.home}/webapps/hawtio" />
<property name="logUrlOnStart" value="true" />
</bean>

Guarda y cierra el archivo cuando hayas terminado y reinicia el servicio Apache ActiveMQ para aplicar los cambios:

systemctl restart apache-activemq

Una vez que hayas terminado, puedes pasar al siguiente paso.

Accede a la interfaz web de Hawt.io

Hawt.io ya está instalado y configurado. Es hora de acceder a su interfaz web.

Abre tu navegador web y escribe la URL http://your-server-ip/hawtio. Serás redirigido a la página de inicio de sesión de Hawt.io:

Inicio de sesión en Hawt.io

Proporciona el nombre de usuario y la contraseña por defecto como admin/admin y haz clic en el botón Iniciar sesión. Deberías ver el panel de control de Hawt.io en la siguiente página:

Panel de control de Hawt.io

Conclusión

Enhorabuena! has instalado con éxito Apache ActiveMQ en CentOS 8. Para más información, visita la documentación de Apache ActiveMQ en ActiveMQ.

También te podría gustar...