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:
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:
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:
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:
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:
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.