如何在 CentOS 8 上安装 Apache ActiveMQ 和 Hawt.io
在此页
- 先决条件
- 安装Java
- 安装和配置 Apache ActiveMQ
- 为 ActiveMQ 创建系统服务文件
- 设置 Apache ActiveMQ 管理员密码
- 将 Nginx 配置为 Apache ActiveMQ 的反向代理
- 配置 SELinux 和防火墙
- 访问 Apache ActiveMQ
- 使用 Hawt.io 监控 ActiveMQ
- 访问 Hawt.io 网络界面
- 结论
Apache ActiveMQ 是一种免费、开源且基于 Java 的消息代理,可用于在两个应用程序之间发送消息。它提供了许多功能,包括数据的高可用性和消息负载平衡。它还支持多种语言的客户端和协议,包括 Java、C、C++、Python、PHP、Perl、Ruby 和 C#。它将消息从发送者转换为接收者,并允许将消息保存在队列中。
在本教程中,我们将学习如何在 CentOS 8 上安装 Apache ActiveMQ。
先决条件
- 一台运行 CentOS 8 的服务器。
- 在您的服务器上配置了根密码。
安装Java
Apache ActiveMQ 是基于 Java 的应用程序,因此您的系统中必须安装 Java。如果没有安装,可以使用以下命令安装:
dnf install java-11-openjdk-devel -y
安装 Java 后,使用以下命令验证已安装的 Java 版本:
java --version
您应该得到以下输出:
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)
安装和配置 Apache ActiveMQ
首先,您需要从其官方网站下载最新版本的 ActiveMQ。您可以使用以下命令下载它:
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
接下来,使用以下命令重命名提取的目录 apache-activemq:
mv apache-activemq-5.15.12 apache-activemq
接下来,为 Apache ActiveMQ 创建一个单独的用户是个好主意。您可以使用以下命令创建一个名为 activemq 的新用户:
useradd activemq
接下来,将 apache-activemq 目录的所有权更改为 activemq:
chown -R activemq:activemq /opt/apache-activemq/
完成后,您可以继续下一步。
为 ActiveMQ 创建系统服务文件
接下来,您需要创建一个 systemd 服务文件来管理 Apache ActiveMQ 服务。您可以使用以下命令创建它:
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
接下来,使用以下命令启动 ActiveMQ 服务并使其在系统重启后启动:
systemctl start apache-activemq
systemctl enable apache-activemq
您可以使用以下命令验证 ActiveMQ 服务的状态:
systemctl status apache-activemq
您应该看到以下输出:
? 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.
默认情况下,Apache ActiveMQ 侦听端口 8161。您可以使用以下命令检查它:
netstat -antup | grep 8161
您应该得到以下输出:
tcp6 0 0 :::8161 :::* LISTEN 9289/java
设置 Apache ActiveMQ 管理员密码
默认情况下,Apache ActiveMQ 管理员用户名和密码设置为 admin/admin。出于安全原因,这是非常危险的。所以建议改成安全密码。
您可以通过编辑以下文件来更改它:
nano /opt/apache-activemq/conf/jetty-realm.properties
使用您想要的密码更改以下行:
# username: password [,rolename ...]
admin: activemqpassword, admin
user: userpassword, user
完成后保存并关闭文件。然后,重新启动 ActiveMQ 服务以应用更改:
systemctl restart apache-activemq
完成后,您可以继续下一步。
将 Nginx 配置为 Apache ActiveMQ 的反向代理
接下来推荐配置Nginx作为ActiveMQ的反向代理。
首先,使用以下命令安装 Nginx Web 服务器:
dnf install nginx -y
安装 Nginx 后,使用以下命令创建一个新的 Nginx 虚拟主机配置文件:
nano /etc/nginx/conf.d/activemq.conf
添加以下行:
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;
}
}
完成后保存并关闭文件。然后,使用以下命令检查 Nginx 是否存在任何语法错误:
nginx -t
您应该看到以下输出:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
最后,使用以下命令启动 Nginx 服务并使其在系统重启后启动:
systemctl start nginx
systemctl enable nginx
您还可以使用以下命令验证 Nginx 状态:
systemctl status nginx
您应该看到以下输出:
? 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...
配置 SELinux 和防火墙
CentOS 8 默认开启 SELinux,建议关闭 SELinux 以保证 Apache ActiveMQ 正常运行。
您可以通过编辑 /etc/selinux/config 文件来禁用 SELinux:
nano /etc/selinux/config
找到以下行:
SELINUX=enforcing
并且,将其替换为以下行:
SELINUX=permissive
保存并关闭文件。然后,重新启动系统以应用更改:
接下来,您需要通过 firewalld 允许端口 80 和 8161。您可以使用以下命令允许它们:
firewall-cmd --zone=public --permanent --add-port=8161/tcp
firewall-cmd --zone=public --permanent --add-port=80/tcp
接下来,重新加载 firewalld 以应用更改:
firewall-cmd --reload
完成后,您可以继续下一步。
访问 Apache ActiveMQ
此时,Apache ActiveMQ 已安装并配置完毕。
现在,打开您的 Web 浏览器并输入 URL http://your-server-ip。您应该会看到以下页面:

您还可以通过访问 URL http://your-server-ip/admin 来访问 Apache ActiveMQ 管理界面。您将被重定向到以下页面:

提供您的管理员用户名和密码,然后单击“登录”按钮。您应该在以下页面中看到 Apache ActiveMQ 管理界面:

使用 Hawt.io 监控 ActiveMQ
您还可以使用 Hawt.io 监控您的 Apache ActiveMQ。 Hawt.io 是一个模块化的 Web 控制台,用于管理基于 Java 的应用程序。它是一个可插拔的管理控制台,支持任何类型的 JVM、任何类型的容器,包括 Tomcat、Jetty、Karaf、JBoss 等等。
首先,使用以下命令下载最新版本的 Hawt.io war 文件:
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
接下来,使用以下命令将提取的目录移动到 webapps 目录:
mv hawtio /opt/apache-activemq/webapps/
接下来,使用以下命令将 webapps 目录的所有权更改为 activemq:
chown -R activemq:activemq /opt/apache-activemq/webapps/
接下来,编辑 Apache ActiveMQ 环境文件并进行一些更改:
nano /opt/apache-activemq/bin/env
找到以下行:
ACTIVEMQ_OPTS="$ACTIVEMQ_OPTS_MEMORY -Djava.util.logging.config.file=logging.properties -Djava.security.auth.login.config=$ACTIVEMQ_CONF/login.config"
将其替换为以下行:
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"
完成后保存并关闭文件。接下来,打开 jetty.xml 文件:
nano /opt/apache-activemq/conf/jetty.xml
<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>
完成后保存并关闭文件,然后重新启动 Apache ActiveMQ 服务以应用更改:
systemctl restart apache-activemq
完成后,您可以继续下一步。
访问 Hawt.io Web 界面
Hawt.io 现已安装和配置。是时候访问它的网络界面了。
打开您的 Web 浏览器并输入 URL http://your-server-ip/hawtio。您将被重定向到 Hawt.io 登录页面:

以 admin/admin 提供默认用户名和密码,然后单击“登录”按钮。您应该在以下页面中看到 Hawt.io 仪表板:

结论
恭喜!您已在 CentOS 8 上成功安装 Apache ActiveMQ。有关更多信息,请访问 ActiveMQ 上的 Apache ActiveMQ 文档。