GlassFish te installeren met Nginx als omgekeerde proxy op Debian 10

GlassFish is een open-source en ’s werelds eerste implementatie van het Java Platform, ontwikkeld door de Eclipse Foundation. Het is een lichtgewicht applicatieserver en ondersteunt verschillende op Java gebaseerde technologieën zoals Enterprise JavaBeans, JPA, JavaServer Faces, JMS, en nog veel meer. GlassFish wordt geleverd met een eenvoudige en makkelijk te gebruiken beheerconsole met een update-tool voor updates en add-on componenten.

In deze handleiding leggen we uit hoe je GlassFish installeert op Debian 10 met Nginx als reverse proxy.

Vereisten

  • Een server waarop Debian 10 draait.
  • Een root wachtwoord is ingesteld op je server.

Aan de slag

Voordat je begint, moet je je systeem bijwerken met de laatste versie. Je kunt dit doen door het volgende commando uit te voeren:

apt-get update -y
apt-get upgrade -y

Zodra je server is bijgewerkt, herstart je je server om de wijzigingen toe te passen.

Java installeren

GlassFish vereist dat java versie 8 op je server is geïnstalleerd. Je zult dus de Java moeten verwijderen als je een andere Java versie op je systeem hebt geïnstalleerd.

Je kunt de Java versie 11 verwijderen met het volgende commando:

apt-get remove openjdk-11-jre-headless

Vervolgens moet je de java versie 8 downloaden van hun officiële website. Zodra de download is voltooid, pak je het gedownloade bestand uit naar de map /usr/lib/jvm met het volgende commando:

mkdir /usr/lib/jvm/
tar -zxvf jdk-8u221-linux-x64.tar.gz -C /usr/lib/jvm/

Stel vervolgens de standaard Java-versie in met het volgende commando:

update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.8.0_221/bin/java 1

Je zou de volgende uitvoer moeten krijgen:

update-alternatives: using /usr/lib/jvm/jdk1.8.0_221/bin/java to provide /usr/bin/java (java) in auto mode

Je kunt nu de java-versie controleren met het volgende commando:

java -version

Je zou de volgende uitvoer moeten zien:

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 installeren

Installeer eerst de benodigde pakketten met het volgende commando:

apt-get install wget unzip -y

Download vervolgens de nieuwste versie van GlassFish met het volgende commando:

wget http://download.oracle.com/glassfish/5.0.1/nightly/latest-glassfish.zip

Zodra het downloaden is voltooid, pak je het gedownloade bestand uit naar de map /opt met het volgende commando:

unzip latest-glassfish.zip -d /opt/

Als je dat gedaan hebt, kun je doorgaan met de volgende stap.

Maak een GlassFish dienst aan

Vervolgens kun je een systemd servicebestand aanmaken om de GlassFish service te beheren. Je kunt het aanmaken met het volgende commando:

nano /etc/systemd/system/glassfish.service

Voeg de volgende inhoud toe:

[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

Sla het bestand op en sluit het. Herlaad vervolgens de systemd daemon met het volgende commando:

systemctl daemon-reload

Start vervolgens de GlassFish service en schakel deze in om bij het opstarten te starten met het volgende commando:

systemctl start glassfish
systemctl enable glassfish

Je kunt nu de status van GlassFish service controleren met het volgende commando:

systemctl status glassfish

Je zou de volgende uitvoer moeten krijgen:

? 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 Admin Console inschakelen

Standaard is het wachtwoord van de GlassFish admin console niet ingesteld. Je zult dus het admin wachtwoord moeten bijwerken.

Voer het volgende commando uit om het beheerderswachtwoord in te stellen:

/opt/glassfish5/bin/asadmin change-admin-password

Geef je gewenste wachtwoord en druk op Enter. Zodra het wachtwoord is ingesteld, zou je de volgende uitvoer moeten zien:

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.

Vervolgens moet je de beveiligde admin-functie inschakelen. Dat kan met het volgende commando:

/opt/glassfish5/bin/asadmin enable-secure-admin

Geef je admin gebruikersnaam en wachtwoord, en druk op Enter om de beveiligde admin in te schakelen, zoals hieronder getoond:

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.

Herstart vervolgens GlassFish service om de configuratiewijzigingen toe te passen:

systemctl restart glassfish

Toegang tot GlassFish

Standaard draait GlassFish op poort 8080. Je hebt er toegang toe door de URL http://your-server-ip:8080 te bezoeken. Je zou de volgende pagina moeten zien:

GlassFish standaardpagina

GlassFish admin console draait op poort 4848. Je kunt toegang krijgen door de URL http://your-server-ip:4848 te bezoeken. Je zou de GlassFish login pagina moeten zien:

Inloggen op GlassFish server

Geef je admin gebruikersnaam en wachtwoord op, en klik op de Login knop. Je zou de GlassFish admin console in het volgende scherm moeten zien:

GlassFish Console

Deploy Application on GlassFish

GlassFish is nu geïnstalleerd en geconfigureerd, het is tijd om de voorbeeldapplicatie op GlassFish te implementeren.

Download eerst de toepassing hello.war met het volgende commando:

wget https://github.com/dmatej/Glassfish/raw/master/v2/www/downloads/quickstart/hello.war

Implementeer vervolgens de hello.war applicatie met het volgende commando:

/opt/glassfish5/bin/asadmin deploy hello.war

Je zou de volgende uitvoer moeten zien:

  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  .."[email protected];....'.
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  [email protected]*..
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.."[email protected]
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.

Om toegang te krijgen tot je applicatie open je je webbrowser en typ je de URL http://your-server-ip:8080/hello. Je wordt doorgestuurd naar de volgende pagina:

Hello World app op GlassFish

Nginx configureren als omgekeerde proxy

Nu moet je Nginx configureren als een reverse proxy om verzoeken die binnenkomen op poort 80 naar 8080 te proxyen.

Installeer eerst Nginx met het volgende commando:

apt-get install nginx -y

Zodra de nginx is geïnstalleerd, maak je een Nginx virtual host bestand voor GlassFish met het volgende commando:

nano /etc/nginx/sites-available/glassfish.conf

Voeg de volgende regels toe:

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/;
  }
}

Sla het bestand op en sluit het. Controleer Nginx vervolgens op een syntaxfout met het volgende commando:

nginx -t

Je zou de volgende uitvoer moeten krijgen:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Schakel vervolgens de Nginx virtuele host in en herstart de Nginx service met het volgende commando:

ln -s /etc/nginx/sites-available/glassfish.conf /etc/nginx/sites-enabled/
systemctl restart nginx

Nu heb je toegang tot je applicatie door de URL http://example.com te bezoeken.

Gefeliciteerd! Je hebt met succes GlassFish geïnstalleerd met Nginx als reverse proxy op Debian 10. Je kunt nu elke op Java gebaseerde applicatie gemakkelijk op je server implementeren.