Cómo instalar el servidor Java GlassFish con Nginx como proxy inverso en Debian 11

GlassFish es un servidor de aplicaciones de código abierto utilizado para desplegar aplicaciones Java. Es compatible con diferentes tecnologías basadas en Java, como JPA, JavaServer Faces, JMS, RMI y muchas otras tecnologías basadas en Java. Proporciona una interfaz basada en la web y en la línea de comandos para gestionar las aplicaciones Java y sus componentes. GlassFish te permite crear aplicaciones portátiles y escalables que pueden integrarse fácilmente con tecnologías heredadas.

En este tutorial, te mostraré cómo instalar el servidor Glassfish con Nginx como proxy inverso en Debian 11.

Requisitos previos

  • Un servidor con Debian 11.
  • Un nombre de dominio válido apuntado con la IP de tu servidor.
  • Una contraseña de root configurada en el servidor.

Instalar Java

Glassfish es un software de aplicación basado en java, por lo que Java debe estar instalado en tu servidor. Si no está instalado, puedes instalarlo ejecutando el siguiente comando:

apt-get install default-jdk unzip -y

Una vez instalado Java, puedes verificar la instalación de Java mediante el siguiente comando:

java --version

Obtendrás la siguiente salida:

openjdk 11.0.13 2021-10-19
OpenJDK Runtime Environment (build 11.0.13+8-post-Debian-1deb11u1)
OpenJDK 64-Bit Server VM (build 11.0.13+8-post-Debian-1deb11u1, mixed mode, sharing)

Una vez que hayas terminado, puedes pasar al siguiente paso.

Descargar Glassfish

En primer lugar, tendrás que descargar la última versión de Glassfish del sitio web de Eclipse. Puedes descargarla utilizando el comando wget como se muestra a continuación:

wget https://download.eclipse.org/ee4j/glassfish/glassfish-6.1.0.zip

Una vez completada la descarga, extrae el archivo descargado al directorio /opt:

unzip glassfish-6.1.0.zip -d /opt/

Una vez que hayas terminado, puedes pasar al siguiente paso.

Crear un archivo de servicio Systemd para Glassfish

A continuación, tendrás que crear un archivo de servicio systemd para gestionar el servicio Glassfish. Puedes crearlo utilizando el siguiente comando:

nano /usr/lib/systemd/system/glassfish.service

Añade las siguientes líneas:

[Unit]
Description = GlassFish Server v6.1.0
After = syslog.target network.target

[Service]
User = root
ExecStart = /usr/bin/java -jar /opt/glassfish6/glassfish/lib/client/appserver-cli.jar start-domain
ExecStop = /usr/bin/java -jar /opt/glassfish6/glassfish/lib/client/appserver-cli.jar stop-domain
ExecReload = /usr/bin/java -jar /opt/glassfish6/glassfish/lib/client/appserver-cli.jar restart-domain
Type = forking

[Install]
WantedBy = multi-user.target

Guarda y cierra el archivo cuando hayas terminado. A continuación, recarga el demonio systemd para aplicar los cambios.

systemctl daemon-reload

A continuación, inicia el servicio Glassfish y habilítalo para que se inicie al reiniciar el sistema:

systemctl start glassfish
systemctl enable glassfish

También puedes verificar el servicio Glassfish con el siguiente comando:

systemctl status glassfish

Obtendrás la siguiente salida:

? glassfish.service - GlassFish Server v6.1.0
     Loaded: loaded (/lib/systemd/system/glassfish.service; disabled; vendor preset: enabled)
     Active: active (running) since Sun 2021-11-07 04:56:16 UTC; 8s ago
    Process: 6018 ExecStart=/usr/bin/java -jar /opt/glassfish6/glassfish/lib/client/appserver-cli.jar start-domain (code=exited, status=0/SUC>
   Main PID: 6037 (java)
      Tasks: 91 (limit: 4679)
     Memory: 343.0M
        CPU: 13.299s
     CGroup: /system.slice/glassfish.service
             ??6037 /usr/lib/jvm/java-11-openjdk-amd64/bin/java -cp /opt/glassfish6/glassfish/modules/glassfish.jar -XX:+UnlockDiagnosticVMOp>

Nov 07 04:56:10 debian11 systemd[1]: Starting GlassFish Server v6.1.0...
Nov 07 04:56:16 debian11 java[6018]: Waiting for domain1 to start .....
Nov 07 04:56:16 debian11 java[6018]: Successfully started the domain : domain1
Nov 07 04:56:16 debian11 java[6018]: domain  Location: /opt/glassfish6/glassfish/domains/domain1
Nov 07 04:56:16 debian11 java[6018]: Log File: /opt/glassfish6/glassfish/domains/domain1/logs/server.log
Nov 07 04:56:16 debian11 java[6018]: Admin Port: 4848
Nov 07 04:56:16 debian11 java[6018]: Command start-domain executed successfully.
Nov 07 04:56:16 debian11 systemd[1]: Started GlassFish Server v6.1.0.

Una vez que hayas terminado, puedes pasar al siguiente paso.

Establecer la contraseña del administrador de Glassfish

Por defecto, Glassfish es accesible sin ninguna contraseña. Por lo tanto, es una buena idea asegurarlo estableciendo una contraseña de administrador. Puedes hacerlo ejecutando el siguiente comando:

/opt/glassfish6/bin/asadmin --port 4848 change-admin-password

Se te pedirá que proporciones el nombre de usuario del administrador como se muestra a continuación:

Enter admin user name [default: admin]>admin

Proporciona el nombre de usuario admin por defecto y pulsa la tecla Enter. Se te pedirá que proporciones la contraseña de administrador existente:

Enter the admin password> 

Pulsa la tecla Intro. Se te pedirá que establezcas una nueva contraseña de administrador como se muestra a continuación:

Introduce la nueva contraseña de administrador> Introduce de nuevo la nueva contraseña de administrador>

Establece tu contraseña segura y pulsa Intro. Obtendrás el siguiente resultado:

Command change-admin-password executed successfully.

A continuación, también se recomienda habilitar el HTTPS en Glassfish. Puedes hacerlo ejecutando el siguiente comando:

/opt/glassfish6/bin/asadmin --port 4848 enable-secure-admin

Se te pedirá que proporciones tu nombre de usuario y contraseña de administrador para habilitar el HTTPS:

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.

Finalmente, reinicia el servicio de Glassfish para aplicar los cambios:

systemctl restart glassfish

Una vez que hayas terminado, puedes pasar al siguiente paso.

Acceder a la interfaz web de GlassFish

En este punto, Glassfish está instalado y funcionando. Por defecto, la interfaz web de Glassfish escucha en el puerto 8080, mientras que la interfaz de administración escucha en el puerto 4848. En primer lugar, accede a la interfaz web de Glassfish utilizando la URL http://your-server-ip:8080. Deberías ver la siguiente página:

El servidor GlassFish está funcionando

A continuación, accede a la interfaz de administración de Glassfish utilizando la URL https://your-server-ip:4848. Serás redirigido a la página de inicio de sesión de Glassfish:

Acceso a 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 interfaz de administración de Glassfish en la siguiente página:

Panel de control de GlassFish

Haz clic en el servidor en el panel izquierdo, deberías ver la siguiente pantalla:

Información general del servidor

Desde aquí, puedes reiniciar, parar y ver los registros de Glassfish.

Haz clic en los Nodos en el panel izquierdo, deberías ver la información del nodo de Glassfish en la siguiente pantalla:

Nodos

Configurar Nginx como Proxy Inverso para Glassfish

Es una buena idea configurar el Nginx como proxy inverso para acceder a la interfaz web de Glassfish. Así podrás acceder a tu aplicación sin utilizar el puerto 8080.

Para ello, instala primero el paquete Nginx con el siguiente comando:

apt-get install nginx -y

Una vez instalado, crea un archivo de configuración del host virtual Nginx con el siguiente comando:

nano /etc/nginx/conf.d/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     glassfish.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 y luego verifica que Nginx no tenga ningún error de sintaxis con el siguiente comando:

nginx -t

Si todo está bien, obtendrás 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, reinicia el servicio Nginx para aplicar los cambios:

systemctl restart nginx

También puedes comprobar el estado del Nginx con el siguiente comando:

systemctl status nginx

Deberías obtener la siguiente salida:

? nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2021-11-07 05:02:58 UTC; 22s ago
       Docs: man:nginx(8)
    Process: 6790 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 6791 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 6873 (nginx)
      Tasks: 3 (limit: 4679)
     Memory: 5.1M
        CPU: 53ms
     CGroup: /system.slice/nginx.service
             ??6873 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             ??6875 nginx: worker process
             ??6876 nginx: worker process

Nov 07 05:02:58 debian11 systemd[1]: Starting A high performance web server and a reverse proxy server...
Nov 07 05:02:58 debian11 systemd[1]: Started A high performance web server and a reverse proxy server.

En este punto, Nginx está instalado y configurado para servir a la interfaz web de Glassfish. Ahora puedes acceder a la interfaz web de Glassfish utilizando la URL http://glassfish.example.com.

Conclusión

Enhorabuena! has instalado con éxito el servidor Glassfish con Nginx como proxy inverso en Debian 11. Ahora puedes empezar a desplegar tu aplicación basada en Java en el servidor Glassfish. No dudes en preguntarme si tienes alguna duda.

También te podría gustar...