本页内容
- 先决条件
- 配置依赖项
- 下载 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

安装完成后,使用以下命令验证 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 管理员
此时,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 命令执行成功)。

为 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 命令执行成功)。

最后,重启 glassfish7 服务以使你的修改生效。命令执行后,你的 GlassFish 安装应该已被保护:管理员用户已设置新密码,并已为 GlassFish 管理界面生成 TLS 证书。
sudo systemctl restart glassfish7
通过 Nginx 反向代理运行 GlassFish
在本指南中,你将让 GlassFish 运行在 Nginx 反向代理之后。因此,现在你需要将 Nginx 安装到你的 AlmaLinux 服务器,然后为反向代理创建一个新的 server block(服务器块)配置。
使用以下命令将 Nginx Web 服务器安装到你的 AlmaLinux。输入 y 以继续安装。
sudo dnf install nginx

安装完成后,使用以下 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

启动后,验证 Nginx 服务,确保该服务正在运行并已启用。
sudo systemctl status nginx
你应能在下方看到 Nginx 服务在 AlmaLinux 上已处于运行并已启用状态。

配置 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。

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

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

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

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