如何在 Debian 10 上使用 Nginx 作为反向代理安装 GlassFish
本教程适用于这些操作系统版本
- Debian 11(Bullseye)
- Debian 10(Buster)
在此页
- 要求
- 开始
- 安装 Java
- 安装 GlassFish
- 创建 GlassFish 服务
- 启用 GlassFish 管理控制台
- 访问 GlassFish
- 在 GlassFish 上部署应用程序
- 将 Nginx 配置为反向代理
GlassFish 是 Eclipse Foundation 开发的 Java 平台的开源和世界上第一个实现。它是一个轻量级应用程序服务器,支持不同的基于 Java 的技术,如 Enterprise JavaBeans、JPA、JavaServer Faces、JMS 等等。 GlassFish 附带一个简单易用的管理控制台,其中包含用于更新和附加组件的更新工具。
在本教程中,我们将解释如何使用 Nginx 作为反向代理在 Debian 10 上安装 GlassFish。
要求
- 运行 Debian 10 的服务器。
- 已为您的服务器设置根密码。
入门
在开始之前,您需要使用最新版本更新您的系统。您可以通过运行以下命令来执行此操作:
apt-get update -y
apt-get upgrade -y
服务器更新后,重新启动服务器以应用更改。
安装Java
GlassFish 要求在您的服务器上安装 Java 版本 8。因此,如果您的系统上安装了任何其他 Java 版本,则需要删除 Java。
您可以使用以下命令删除 Java 版本 11:
apt-get remove openjdk-11-jre-headless
接下来,您需要从他们的官方网站下载 Java 版本 8。下载完成后,使用以下命令将下载的文件解压缩到 /usr/lib/jvm 目录:
mkdir /usr/lib/jvm/
tar -zxvf jdk-8u221-linux-x64.tar.gz -C /usr/lib/jvm/
接下来,使用以下命令设置默认 Java 版本:
update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.8.0_221/bin/java 1
您应该得到以下输出:
update-alternatives: using /usr/lib/jvm/jdk1.8.0_221/bin/java to provide /usr/bin/java (java) in auto mode
您现在可以使用以下命令检查 java 版本:
java -version
您应该看到以下输出:
java version "1.8.0_221"
Java(TM) SE Runtime Environment (build 1.8.0_221-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.221-b11, mixed mode)
安装 GlassFish
首先,使用以下命令安装所需的包:
apt-get install wget unzip -y
接下来,使用以下命令下载最新版本的 GlassFish:
wget http://download.oracle.com/glassfish/5.0.1/nightly/latest-glassfish.zip
下载完成后,使用以下命令将下载的文件解压缩到 /opt 目录:
unzip latest-glassfish.zip -d /opt/
完成后,您可以继续下一步。
创建 GlassFish 服务
接下来,您可以创建一个 systemd 服务文件来管理 GlassFish 服务。您可以使用以下命令创建它:
nano /etc/systemd/system/glassfish.service
添加以下内容:
[Unit]
Description = GlassFish Server v5.0
After = syslog.target network.target
[Service]
ExecStart=/opt/glassfish5/bin/asadmin start-domain
ExecReload=/opt/glassfish5/bin/asadmin restart-domain
ExecStop=/opt/glassfish5/bin/asadmin stop-domain
Type = forking
[Install]
WantedBy = multi-user.target
保存并关闭文件。然后,使用以下命令重新加载 systemd 守护进程:
systemctl daemon-reload
接下来,启动 GlassFish 服务并使用以下命令使其在启动时启动:
systemctl start glassfish
systemctl enable glassfish
您现在可以使用以下命令检查 GlassFish 服务的状态:
systemctl status glassfish
您应该得到以下输出:
? glassfish.service - GlassFish Server v5.0
Loaded: loaded (/etc/systemd/system/glassfish.service; disabled; vendor preset: enabled)
Active: active (running) since Thu 2019-09-19 04:54:25 EDT; 42s ago
Process: 15205 ExecStart=/opt/glassfish5/bin/asadmin start-domain (code=exited, status=0/SUCCESS)
Main PID: 15217 (java)
Tasks: 90 (limit: 1138)
Memory: 271.7M
CGroup: /system.slice/glassfish.service
??15217 /usr/lib/jvm/jdk1.8.0_221/bin/java -cp /opt/glassfish5/glassfish/modules/glassfish.jar -XX:+UnlockDiagnosticVMOptions -XX:Ne
Sep 19 04:53:42 debian systemd[1]: Starting GlassFish Server v5.0...
Sep 19 04:54:24 debian asadmin[15205]: Waiting for domain1 to start .................................
Sep 19 04:54:24 debian asadmin[15205]: Successfully started the domain : domain1
Sep 19 04:54:24 debian asadmin[15205]: domain Location: /opt/glassfish5/glassfish/domains/domain1
Sep 19 04:54:24 debian asadmin[15205]: Log File: /opt/glassfish5/glassfish/domains/domain1/logs/server.log
Sep 19 04:54:24 debian asadmin[15205]: Admin Port: 4848
Sep 19 04:54:24 debian asadmin[15205]: Command start-domain executed successfully.
Sep 19 04:54:25 debian systemd[1]: Started GlassFish Server v5.0.
lines 1-18/18 (END)
启用 GlassFish 管理控制台
默认情况下,未设置 GlassFish 管理控制台密码。因此,您需要更新管理员密码。
运行以下命令设置管理员密码:
/opt/glassfish5/bin/asadmin change-admin-password
提供您想要的密码,然后按 Enter。设置密码后,您应该会看到以下输出:
Enter admin user name [default: admin]>admin
Enter the admin password>
Enter the new admin password>
Enter the new admin password again>
Command change-admin-password executed successfully.
接下来,您需要启用安全管理功能。您可以使用以下命令执行此操作:
/opt/glassfish5/bin/asadmin enable-secure-admin
提供您的管理员用户名和密码,然后按 Enter 键启用安全管理员,如下所示:
Enter admin user name> admin
Enter admin password for user "admin">
You must restart all running servers for the change in secure admin to take effect.
Command enable-secure-admin executed successfully.
接下来,重新启动 GlassFish 服务以应用配置更改:
systemctl restart glassfish
访问 GlassFish
默认情况下,GlassFish 应用程序在端口 8080 上运行。您可以通过访问 URL http://your-server-ip:8080 来访问它。您应该会看到以下页面:

GlassFish 管理控制台在端口 4848 上运行。您可以通过访问 URL http://your-server-ip:4848 来访问它。您应该会看到 GlassFish 登录页面:

提供您的管理员用户名和密码,然后单击“登录”按钮。您应该会在以下屏幕中看到 GlassFish 管理控制台:

在 GlassFish 上部署应用程序
现在安装并配置了 GlassFish,是时候在 GlassFish 上部署示例应用程序了。
首先,使用以下命令下载 hello.war 应用程序:
wget https://github.com/dmatej/Glassfish/raw/master/v2/www/downloads/quickstart/hello.war
接下来,使用以下命令部署 hello.war 应用程序:
/opt/glassfish5/bin/asadmin deploy hello.war
您应该看到以下输出:
Version: V3
Subject: CN=localhost, OU=GlassFish, O=Oracle Corporation, L=Santa Clara, ST=California, C=US
Signature Algorithm: SHA256withRSA, OID = 1.2.840.113549.1.1.11
Key: Sun RSA public key, 2048 bits
modulus: 26796330640308027923768800042502020134808966576745098232029910481655545436468207928921434907495986430069072245547607053010428717755932187048623252153613041636091429700133899537566912806297788375081359516836091002133743138757261794690981737280330851500902934286405305506594303276580413684625941149729611614458782091187522283499926880436357851913036137048969953439207474630152049712806975982901461106170366207997764866053158318707816771263261147284707875045634066423002500565550480728681743613266266732299458152358213914375115269066441015633123820868476095174900081535873996509058837674720310526766610294764426209317187
public exponent: 65537
Validity: [From: Tue Jan 15 21:17:50 EST 2019,
To: Fri Jan 12 21:17:50 EST 2029]
Issuer: CN=localhost, OU=GlassFish, O=Oracle Corporation, L=Santa Clara, ST=California, C=US
SerialNumber: [ 3347569f]
Certificate Extensions: 1
[1]: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: F2 F1 22 14 40 CA 9E 1D 92 3B B6 B9 09 D1 27 E7 ..";....'.
0010: 50 1A 37 4D P.7M
]
]
]
Algorithm: [SHA256withRSA]
Signature:
0000: C7 CB 91 D4 9B 39 21 13 B3 48 87 09 85 2E DF B7 .....9!..H......
0010: F9 E7 52 1B 39 D0 12 55 97 A8 02 8D B9 EC 26 F0 ..R.9..U......&.
0020: A6 8F 29 5B 96 80 71 AA CB C8 EA 83 4F 18 E7 19 ..)[..q.....O...
0030: 26 CF BF 72 B1 E6 23 53 F2 14 CD BA 68 FE 4B 4C &..r..#S....h.KL
0040: BB B1 3E DE D9 EB 6D 96 8C 8F 0D 33 B6 E7 28 F1 ..>...m....3..(.
0050: D5 40 6B BC 01 FF F9 5A 79 9A 96 DA D9 2A 84 99 *..
0060: FA 3A 7A 9D 52 6C C2 D5 E9 DC 98 8B 20 EF 69 99 .:z.Rl...... .i.
0070: E6 FC 1B 0F CA B2 0C 66 BE BB A7 EA 3D DB BB F5 .......f....=...
0080: 88 F1 B4 B1 15 74 FA 9F E0 9A 98 C5 12 A0 60 B4 .....t........`.
0090: 9B 92 19 FD BA 81 20 7F 51 83 E9 22 56 96 9A 40 ...... .Q.."
00A0: 2C 27 BB 86 57 7D 2E E9 C5 98 1A 04 A2 C5 FC 17 ,'..W...........
00B0: 6E 8B 31 79 29 A0 A1 22 1A 31 C0 A6 96 7A D4 80 n.1y)..".1...z..
00C0: 3F 05 26 BB DE D1 2D 74 01 1F 24 EC CE 3B 97 42 ?.&...-t..$..;.B
00D0: 16 E8 16 F1 A4 10 92 0B 8E A5 18 59 BF AA 69 B0 ...........Y..i.
00E0: DB C8 C2 66 5F 5D 2F 3D 4B C7 90 1D C2 24 B1 57 ...f_]/=K....$.W
00F0: 22 02 DA 76 FF 2E B7 C5 E4 E6 50 BD 73 36 AA 8A "..v......P.s6..
]
Do you trust the above certificate [y|N] -->y
Enter admin user name> admin
Enter admin password for user "admin">
Application deployed with name hello.
Command deploy executed successfully.
要访问您的应用程序,请打开您的 Web 浏览器并输入 URL http://your-server-ip:8080/hello。您将被重定向到以下页面:

配置 Nginx 作为反向代理
现在,您需要将 Nginx 配置为反向代理,以代理来自端口 80 到 8080 的请求。
首先,使用以下命令安装 Nginx:
apt-get install nginx -y
安装 nginx 后,使用以下命令为 GlassFish 创建一个 Nginx 虚拟主机文件:
nano /etc/nginx/sites-available/glassfish.conf
添加以下行:
upstream glassfish {
server 127.0.0.1:8080 weight=100 max_fails=5 fail_timeout=5;
}
server {
listen 80;
server_name example.com;
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://glassfish/hello/;
}
}
保存并关闭文件。然后,使用以下命令检查 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 虚拟主机并使用以下命令重新启动 Nginx 服务:
ln -s /etc/nginx/sites-available/glassfish.conf /etc/nginx/sites-enabled/
systemctl restart nginx
现在,您可以通过访问 URL http://example.com 来访问您的应用程序。
恭喜!您已经在 Debian 10 上成功安装了带有 Nginx 作为反向代理的 GlassFish。您现在可以轻松地在您的服务器上部署任何基于 Java 的应用程序。