本页内容

  • 先决条件
  • 配置依赖项
  • 下载 GlassFish 软件包
  • 为 GlassFish 配置 systemd 服务
  • 配置 GlassFish 管理员
  • 通过 Nginx 反向代理运行 GlassFish
  • 配置 Firewalld
  • 访问 GlassFish
  • 总结

GlassFish 是由 Eclipse 开发的 Java EE 平台的免费开源实现。它是世界上第一个用于部署 Java 应用程序的 Java EE 平台实现。GlassFish 借助 Enterprise JavaBeans、JPA、JavaServer Faces 和 JMS 等多种 Java 技术的支持,提供了可扩展的架构。

本指南将介绍如何在 AlmaLinux 9 服务器上通过 Nginx 反向代理安装 GlassFish。我们还将介绍如何通过启用身份认证并配置安全的 SSL/TLS 连接来保护 GlassFish 管理界面。

先决条件

在开始之前,请确保你已具备以下条件:

  • 一台 AlmaLinux 9 服务器。
  • 一个具有管理员权限的非 root 用户。
  • 一个指向服务器 IP 地址的本地域名。

配置依赖项

首先,你需要配置 AlmaLinux 系统,添加一个用于运行 GlassFish 的系统用户,然后安装 Java OpenJDK 软件包。

在安装任何软件包之前,请使用以下命令创建一个名为 glassfish 的新系统用户。该用户将拥有默认主目录 /opt/glassfish7,该目录将用作 GlassFish 的安装目录。

sudo useradd -m -d /opt/glassfish7 -U -s /bin/false glassfish

现在使用以下命令安装 Java OpenJDK 21 和 unzip 软件包。输入 y 以继续安装。

sudo dnf install java-21-openjdk unzip nano

在 AlmaLinux 9 上使用 Nginx 反向代理安装 GlassFish Java 应用服务器

安装完成后,使用以下命令验证 Java 版本。请确保你的 AlmaLinux 服务器上安装了 Java 17 或 21。

java --version

在 AlmaLinux 9 上使用 Nginx 反向代理安装 GlassFish Java 应用服务器

下载 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

在 AlmaLinux 9 上使用 Nginx 反向代理安装 GlassFish Java 应用服务器

最后,使用以下命令验证 glassfish7 服务。请确保 glassfish7 服务已在你的系统上启用并正在运行。

sudo systemctl status glassfish7

在 AlmaLinux 9 上使用 Nginx 反向代理安装 GlassFish Java 应用服务器

配置 GlassFish 管理员

此时,GlassFish 已作为 systemd 服务在你的系统上运行。现在你需要确认 GlassFish 的管理员用户,并配置 enable-secure-admin 以保护 GlassFish 管理界面。

首先,运行以下命令为你的 GlassFish 安装创建一个新的管理员用户。

sudo -u glassfish /opt/glassfish7/bin/asadmin --port 4848 change-admin-password

当提示输入用户名时,输入默认用户 admin;当提示输入密码时,按 ENTER 键。默认的 GlassFish 没有密码。当提示设置新密码时,输入你的密码并重复确认。

过程完成后,你应该会看到输出 ' Command change-admin-password executed successfully '(change-admin-password 命令执行成功)。

在 AlmaLinux 9 上使用 Nginx 反向代理安装 GlassFish Java 应用服务器

为 GlassFish 配置管理员密码后,运行以下命令以启用 secure-admin 功能。这将为 GlassFish 自动生成 SSL/TLS 证书。

sudo -u glassfish /opt/glassfish7/bin/asadmin --port 4848 enable-secure-admin

在提示时输入你的 GlassFish 管理员用户名和密码。过程成功后,你应该会看到输出 ' Command enable-secure-admin executed successfully '(enable-secure-admin 命令执行成功)。

在 AlmaLinux 9 上使用 Nginx 反向代理安装 GlassFish Java 应用服务器

最后,重启 glassfish7 服务以使你的修改生效。命令执行后,你的 GlassFish 安装应该已被保护:管理员用户已设置新密码,并已为 GlassFish 管理界面生成 TLS 证书。

sudo systemctl restart glassfish7

通过 Nginx 反向代理运行 GlassFish

在本指南中,你将让 GlassFish 运行在 Nginx 反向代理之后。因此,现在你需要将 Nginx 安装到你的 AlmaLinux 服务器,然后为反向代理创建一个新的 server block(服务器块)配置。

使用以下命令将 Nginx Web 服务器安装到你的 AlmaLinux。输入 y 以继续安装。

sudo dnf install nginx

在 AlmaLinux 9 上使用 Nginx 反向代理安装 GlassFish Java 应用服务器

安装完成后,使用以下 nano 编辑器命令创建新的 server block 配置文件 /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.howtoforge.local;
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 语法。如果语法正确,你应该会看到输出 'syntax is ok - test is successful'(语法正确 —— 测试成功)。

sudo nginx -t

然后,使用以下命令在你的 AlmaLinux 服务器上启动并启用 Nginx。

sudo systemctl start nginx
sudo systemctl enable nginx

在 AlmaLinux 9 上使用 Nginx 反向代理安装 GlassFish Java 应用服务器

启动后,验证 Nginx 服务,确保该服务正在运行并已启用。

sudo systemctl status nginx

你应能在下方看到 Nginx 服务在 AlmaLinux 上已处于运行并已启用状态。

在 AlmaLinux 9 上使用 Nginx 反向代理安装 GlassFish Java 应用服务器

配置 Firewalld

Nginx 启动并运行后,你必须通过 firewalld 在服务器上开放 HTTP 端口。此外,你还可以开放 GlassFish 管理界面所使用的 4848 端口。

使用以下命令在 firewalld 上开放 HTTP 和 HTTPS 服务。

sudo firewall-cmd --add-service={http,https} --permanent

开放用于 GlassFish 管理的 TCP 4848 端口。

sudo firewall-cmd --add-port=4848/tcp --permanent

现在重新加载 firewalld 以应用你的更改。然后,验证已启用的规则。

sudo firewall-cmd --reload
sudo firewall-cmd --list-all

你可以在下方看到 HTTP、HTTPS 服务以及 4848 端口已添加到 firewalld。

在 AlmaLinux 9 上使用 Nginx 反向代理安装 GlassFish Java 应用服务器

访问 GlassFish

打开你的 Web 浏览器并访问你的 GlassFish 域名,例如 http://glassfish.howtoforge.local/ 。如果安装成功,你应该会看到如下的 GlassFish 索引页面。

在 AlmaLinux 9 上使用 Nginx 反向代理安装 GlassFish Java 应用服务器

现在打开一个新标签页,访问 http://glassfish.howtoforge.local:4848/ 以进入 GlassFish 管理界面。输入默认 admin 用户名和密码,然后点击 Login(登录)。

在 AlmaLinux 9 上使用 Nginx 反向代理安装 GlassFish Java 应用服务器

如果密码正确,你应该会看到 GlassFish 的仪表盘。

在 AlmaLinux 9 上使用 Nginx 反向代理安装 GlassFish Java 应用服务器

总结

恭喜!你已成功在 AlmaLinux 9 服务器上安装了 GlassFish。你安装了 GlassFish、配置了管理员用户,并保护了 GlassFish 的管理界面。最后,你还安装并配置了 Nginx 作为 GlassFish 安装的反向代理。