Cómo instalar GlassFish con Nginx como proxy inverso en Debian 10

GlassFish es una implementación de código abierto y la primera del mundo de la Plataforma Java desarrollada por la Fundación Eclipse. Es un servidor de aplicaciones ligero y soporta diferentes tecnologías basadas en Java, como Enterprise JavaBeans, JPA, JavaServer Faces, JMS y muchas más. GlassFish viene con una consola de administración sencilla y fácil de usar, con una herramienta de actualización para las actualizaciones y los componentes añadidos.

En este tutorial, explicaremos cómo instalar GlassFish en Debian 10 con Nginx como proxy inverso.

Requisitos

  • Un servidor con Debian 10.
  • Una contraseña de root en tu servidor.

Cómo empezar

Antes de empezar, tendrás que actualizar tu sistema con la última versión. Puedes hacerlo ejecutando el siguiente comando:

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

Una vez actualizado tu servidor, reinicia tu servidor para aplicar los cambios.

Instalación de Java

GlassFish requiere que la versión 8 de Java esté instalada en tu servidor. Por lo tanto, tendrás que eliminar el Java si tienes alguna otra versión de Java instalada en tu sistema.

Puedes eliminar la versión 11 de Java con el siguiente comando:

apt-get remove openjdk-11-jre-headless

A continuación, tendrás que descargar la versión 8 de Java desde su sitio web oficial. Una vez completada la descarga, extrae el archivo descargado al directorio /usr/lib/jvm con el siguiente comando:

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

A continuación, establece la versión de Java por defecto con el siguiente comando:

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

Deberías obtener la siguiente salida:

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

Ahora puedes comprobar la versión de java con el siguiente comando:

java -version

Deberías ver la siguiente salida:

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)

Instalar GlassFish

Primero, instala los paquetes necesarios con el siguiente comando:

apt-get install wget unzip -y

A continuación, descarga la última versión de GlassFish con el siguiente comando:

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

Una vez finalizada la descarga, extrae el archivo descargado al directorio /opt con el siguiente comando:

unzip latest-glassfish.zip -d /opt/

Una vez hecho esto, puedes pasar al siguiente paso.

Crear un servicio GlassFish

A continuación, puedes crear un archivo de servicio systemd para gestionar el servicio GlassFish. Puedes crearlo con el siguiente comando:

nano /etc/systemd/system/glassfish.service

Añade el siguiente contenido:

[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

Guarda y cierra el archivo. A continuación, recarga el demonio systemd con el siguiente comando

systemctl daemon-reload

A continuación, inicia el servicio GlassFish y permite que se inicie al arrancar con el siguiente comando:

systemctl start glassfish
systemctl enable glassfish

Ahora puedes comprobar el estado del servicio GlassFish con el siguiente comando:

systemctl status glassfish

Deberías obtener la siguiente salida:

? 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)

Habilitar la consola de administración de GlassFish

Por defecto, la contraseña de la consola de administración de GlassFish no está configurada. Por lo tanto, tendrás que actualizar la contraseña de administrador.

Ejecuta el siguiente comando para establecer la contraseña de administrador:

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

Introduce la contraseña que desees y pulsa Intro. Una vez establecida la contraseña, deberías ver la siguiente salida:

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.

A continuación, tendrás que activar la función de administración segura. Puedes hacerlo con el siguiente comando:

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

Proporciona tu nombre de usuario y contraseña de administrador, y pulsa Intro para habilitar el administrador seguro, como se muestra a continuación:

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.

A continuación, reinicia el servicio GlassFish para aplicar los cambios de configuración:

systemctl restart glassfish

Accede a GlassFish

Por defecto, la aplicación GlassFish se ejecuta en el puerto 8080. Puedes acceder a ella visitando la URL http://your-server-ip:8080. Deberías ver la siguiente página:

Página por defecto de GlassFish

La consola de administración de GlassFish se ejecuta en el puerto 4848. Puedes acceder a ella visitando la URL http://your-server-ip:4848. Deberías ver la página de inicio de sesión de GlassFish:

Acceder al servidor GlassFish

Proporciona tu nombre de usuario y contraseña de administrador, y haz clic en el botón de inicio de sesión. Deberías ver la consola de administración de GlassFish en la siguiente pantalla:

Consola GlassFish

Despliega la aplicación en GlassFish

GlassFish ya está instalado y configurado, es hora de desplegar la aplicación de ejemplo en GlassFish.

Primero, descarga la aplicación hello.war con el siguiente comando:

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

A continuación, despliega la aplicación hello.war con el siguiente comando:

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

Deberías ver la siguiente salida:

  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.

Para acceder a tu aplicación, abre tu navegador web y escribe la URL http://your-server-ip:8080/hello. Serás redirigido a la siguiente página:

Aplicación Hola Mundo en GlassFish

Configurar Nginx como proxy inverso

Ahora, tendrás que configurar Nginx como proxy inverso para que desplace las peticiones que lleguen por el puerto 80 al 8080.

Primero, instala Nginx con el siguiente comando:

apt-get install nginx -y

Una vez instalado Nginx, crea un archivo de host virtual Nginx para GlassFish con el siguiente comando:

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

Añade las siguientes líneas:

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

Guarda y cierra el archivo. A continuación, comprueba si Nginx tiene algún error de sintaxis con el siguiente comando

nginx -t

Deberías obtener la siguiente salida:

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

A continuación, habilita el host virtual Nginx y reinicia el servicio Nginx con el siguiente comando:

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

Ahora, puedes acceder a tu aplicación visitando la URL http://example.com.

Enhorabuena! has instalado con éxito GlassFish con Nginx como proxy inverso en Debian 10. Ahora puedes desplegar cualquier aplicación basada en Java en tu servidor fácilmente.

También te podría gustar...