如何在 AlmaLinux 9 上安装带有 Nginx 反向代理的 GlassFish Java 应用程序服务器
GlassFish 是由 Eclipse 开发的 Java EE 平台的免费开源实现。它是世界上第一个用于部署 Java 应用程序的 Java EE 平台的实现。 GlassFish 提供可扩展的架构,支持多种 Java 技术,例如 Enterprise JavaBeans、JPA、JavaServer Faces 和 JMS。
本指南将向您展示如何使用 Nginx 反向代理在 AlmaLinux 9 服务器上安装 GlassFish。我们还介绍了如何通过为 GlassFish 管理启用安全 SSL/TLS 连接的身份验证和设置来保护 GlassFish。
先决条件
在开始之前,请确保您具备以下条件:
- AlmaLinux 9 服务器。
- 具有管理员权限的非 root 用户。
- 本地域名指向服务器IP地址。
设置依赖关系
首先,您需要通过添加将用于运行GlassFish的系统用户来设置AlmaLinux系统,然后安装Java OpenJDK软件包。
在安装任何软件包之前,请使用以下命令创建一个新的系统用户 glassfish。该用户将拥有默认主目录 /opt/glassfish7,它将用作 GlassFish 的安装目录。
sudo useradd -m -d /opt/glassfish7 -U -s /bin/false glassfish
现在安装 Java OpenJDK 21 并使用以下命令解压缩包。输入 y 继续安装。
sudo dnf install java-21-openjdk unzip nano
安装完成后,使用以下命令验证 Java 版本。确保您的AlmaLinux服务器上安装了Java 17或21。
java --version
下载 GlassFish 包
创建系统用户并安装 Java 后,您现在可以下载 GlassFish 软件包。请务必访问 GlassFish 下载页面并复制最新版本的链接。
使用下面的 wget 命令下载 GlassFish 软件包。
wget https://download.eclipse.org/ee4j/glassfish/glassfish-7.0.12.zip
下载后,使用以下 unzip 命令将文件 glassfish-7.0.12.zip 解压到 /opt 目录。这会将 GlassFish 解压到 /opt/glassfish7 目录。
unzip glassfish-7.0.12.zip -d /opt
最后,将 /opt/glassfish7 目录的所有权更改为用户 glassfish。这是因为您将以系统用户 glassfish 的身份运行 GlassFish。
sudo chown -R glassfish:glassfish /opt/glassfish7
为 GlassFish 设置 systemd 服务
在本指南中,您将把 GlassFish 作为 systemd 服务运行。这将在后台运行 GlassFish,您可以通过 systemctl 实用程序轻松管理它。
使用以下 Nano 编辑器创建新的 systemd 服务文件 /etc/systemd/system/glassfish7.service。
sudo nano /etc/systemd/system/glassfish7.service
在下面插入 GlassFish 的 systemd 配置。
[Unit]
Description = GlassFish Server v7
After = syslog.target network.target
[Service]
User=glassfish
ExecStart=/opt/glassfish7/bin/asadmin start-domain
ExecReload=/opt/glassfish7/bin/asadmin restart-domain
ExecStop=/opt/glassfish7/bin/asadmin stop-domain
Type = forking
[Install]
WantedBy = multi-user.target
完成后保存文件并关闭编辑器。
现在重新加载 systemd 管理器以应用新的服务文件。
sudo systemctl daemon-reload
然后,使用以下命令启动并启用 GlassFish。启动后,GlassFish 应在端口 8080 和 4848 上运行。
sudo systemctl start glassfish7
sudo systemctl enable glassfish7
最后,使用以下命令验证 glassfish7 服务。确保 glassfish7 服务已启用并在您的系统上运行。
sudo systemctl status glassfish7
设置 GlassFish 管理员
此时,GlasFish 正在作为 systemd 服务在您的系统上运行。现在,您需要确认 GlassFish 的管理员用户并设置启用安全管理以保护 GlassFish 管理。
首先,运行以下命令为 GlassFish 安装创建新的管理员用户。
sudo -u glassfish /opt/glassfish7/bin/asadmin --port 4848 change-admin-password
当提示输入用户时,键入默认用户 admin,并在要求输入密码时按 ENTER。默认的 GlassFish 没有密码。
当提示设置新密码时,输入您的密码并重复。
该过程完成后,您应该会收到输出“命令更改管理密码已成功执行”。
配置 GlassFish 的管理员密码后,运行以下命令以启用安全管理功能。这将为 GlassFish 自动生成 SSL/TLS 证书。
sudo -u glassfish /opt/glassfish7/bin/asadmin --port 4848 enable-secure-admin
当系统询问时,输入 GlassFish 的管理员用户和密码。该过程成功后,您应该会看到输出“命令启用安全管理已成功执行”。
最后,重新启动 glassfish7 服务以将修改应用到 GlassFish。执行该命令后,您的 GlassFish 安装应该受到保护,管理员用户应具有新密码,并为 GlassFish 管理员生成 TLS 证书。
sudo systemctl restart glassfish7
使用 Nginx 反向代理运行 GlassFish
在本指南中,您将在 Nginx 反向代理后面运行 GlassFish。所以现在您需要将Nginx安装到您的AlmaLinux服务器,然后为反向代理创建一个新的服务器块配置。
使用以下命令将 Nginx Web 服务器安装到您的 AlmaLinux。输入 y 继续安装。
sudo dnf install nginx
安装完成后,使用以下 nano 编辑器命令创建新的服务器块配置 /etc/nginx/conf.d/glassfish.conf。
sudo nano /etc/nginx/conf.d/glassfish.conf
插入以下配置,为默认在端口 8080 上运行的 GlassFish 设置反向代理。请务必将以下域名更改为您的本地域。
upstream glassfish7 {
server 127.0.0.1:8080 weight=100 max_fails=5 fail_timeout=5;
}
server {
listen 80;
server_name glassfish.hwdomain.io;
location / {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://glassfish7/;
}
}
完成后,保存并退出文件。
现在使用以下命令验证 Nginx 语法。如果您有正确的语法,您应该得到一个输出“语法正确 - 测试成功”。
sudo nginx -t
然后,使用以下命令在您的AlmaLinux服务器上启动并启用Nginx。
sudo systemctl start nginx
sudo systemctl enable nginx
启动后,验证 Nginx 服务以确保该服务正在运行并启用。
sudo systemctl status nginx
下面您应该看到 Nginx 服务正在 AlmaLinux 上运行并启用。
设置Firewalld
当 Nginx 启动并运行时,您必须通过防火墙打开服务器上的 HTTP 端口。除此之外,您还可以打开 GlassFish 管理员使用的端口 4848。
使用以下命令在firewalld 上打开HTTP 和HTTPS 服务。
sudo firewall-cmd --add-service={http,https} --permanent
打开 TCP 端口 4848,该端口将用于 GlassFish 管理。
sudo firewall-cmd --add-port=4848/tcp --permanent
现在重新加载firewalld以将更改应用到firewalld。然后,验证启用 lis 的规则。
sudo firewall-cmd --reload
sudo firewall-cmd --list-all
您可以在下面看到添加到firewalld 的HTTP、HTTPS 服务和端口4848。
访问 GlassFish
打开 Web 浏览器并访问 GlassFish 的域名,例如 http://glassfish.hwdomain.io/。如果安装成功,您应该会获得如下所示的 GlassFish 索引页。
现在打开一个新选项卡并访问 http://glassfish.hwdomain.io:4848/ 以访问 GlassFish 管理。输入默认管理员密码和您的密码,然后单击“登录”。
如果您的密码正确,您应该会看到 GlassFish 的仪表板。
结论
恭喜!您现在已经在AlmaLinux 9服务器上成功安装了GlassFish。您已安装 GlassFish、配置管理员用户并保护 GlassFish 的管理员。最后,您还安装并配置了 Nginx 作为 GlassFish 安装的反向代理。