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

El servidor GlassFish se est√° ejecutando

GlassFish es un servidor de aplicaciones de código abierto que se utiliza para implementar aplicaciones Java. Es compatible con diferentes tecnologías basadas en Java, incluidas JPA, JavaServer Faces, JMS, RMI, así como muchas otras tecnologías basadas en Java. Proporciona una interfaz basada en web y de línea de comandos para administrar aplicaciones Java y sus componentes. GlassFish le permite crear aplicaciones portátiles y escalables que se pueden integrar fácilmente con tecnologías heredadas.

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

requisitos previos

  • Un servidor que ejecuta Debian 11.
  • Un nombre de dominio v√°lido apuntado con la IP de su servidor.
  • Una contrase√Īa de root est√° configurada en el servidor.

Instalar Java

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

apt-get install default-jdk unzip -y

Una vez que Java está instalado, puede verificar la instalación de Java usando el siguiente comando:

java --version

Obtendr√° el siguiente resultado:

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 haya terminado, puede continuar con el siguiente paso.

Descargar Glassfish

Primero, deber√° descargar la √ļltima versi√≥n de Glassfish del sitio web de Eclipse. Puede descargarlo usando 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, extraiga el archivo descargado al directorio /opt:

unzip glassfish-6.1.0.zip -d /opt/

Una vez que haya terminado, puede continuar con el siguiente paso.

Crear un archivo de servicio de Systemd para Glassfish

A continuación, deberá crear un archivo de servicio systemd para administrar el servicio Glassfish. Puedes crearlo usando el siguiente comando:

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

Agregue 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

Guarde y cierre el archivo cuando haya terminado. Luego, vuelva a cargar el demonio systemd para aplicar los cambios.

systemctl daemon-reload

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

systemctl start glassfish
systemctl enable glassfish

También puede verificar el servicio Glassfish usando el siguiente comando:

systemctl status glassfish

Obtendr√° el siguiente resultado:

? 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 haya terminado, puede continuar con el siguiente paso.

Establecer contrase√Īa de administrador de Glassfish

De forma predeterminada, se puede acceder a Glassfish sin ninguna contrase√Īa. Por lo tanto, es una buena idea protegerlo configurando una contrase√Īa de administrador. Puedes hacerlo ejecutando el siguiente comando:

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

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

Enter admin user name [default: admin]>admin

Proporcione el nombre de usuario de administrador predeterminado y presione la tecla Intro. Se le pedir√° que proporcione la contrase√Īa de administrador existente:

Enter the admin password> 

Simplemente presione la tecla Intro. Se le pedir√° que establezca una nueva contrase√Īa de administrador como se muestra a continuaci√≥n:

Ingrese la nueva contrase√Īa de administrador> Ingrese la nueva contrase√Īa de administrador nuevamente>

Establezca su contrase√Īa segura y presione Entrar. Obtendr√° el siguiente resultado:

Command change-admin-password executed successfully.

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

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

Se le pedir√° que proporcione su nombre de usuario y contrase√Īa de administrador para habilitar 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, reinicie el servicio Glassfish para aplicar los cambios:

systemctl restart glassfish

Una vez que haya terminado, puede continuar con el siguiente paso.

Acceder a la interfaz web de GlassFish

En este punto, Glassfish está instalado y funcionando. De forma predeterminada, la interfaz web de Glassfish escucha en el puerto 8080 mientras la interfaz de administración escucha en el puerto 4848. Primero, acceda a la interfaz web de Glassfish usando la URL http://su-servidor-ip:8080. Deberías ver la siguiente página:

El servidor GlassFish se est√° ejecutando

A continuación, acceda a la interfaz de administración de Glassfish utilizando la URL https://su-servidor-ip:4848. Será redirigido a la página de inicio de sesión de Glassfish:

Inicio de sesión

Proporcione su nombre de usuario y contrase√Īa de administrador y haga clic en el Acceso bot√≥n. Deber√≠a ver la interfaz de administraci√≥n de Glassfish en la siguiente p√°gina:

Tablero GlassFish

Haga clic en el servidor en el panel izquierdo, debería ver la siguiente pantalla:

Información general del servidor

Desde aquí, puede reiniciar, detener y ver los registros de Glassfish.

Haga clic en el Nodos en el panel izquierdo, debería ver la información del nodo Glassfish en la siguiente pantalla:

Nodos

Configurar Nginx como proxy inverso para Glassfish

Es una buena idea configurar Nginx como un proxy inverso para acceder a la interfaz web de Glassfish. Para que pueda acceder a su aplicación sin usar el puerto 8080.

Para hacerlo, primero instale el paquete Nginx con el siguiente comando:

apt-get install nginx -y

Una vez instalado, cree un archivo de configuración de host virtual Nginx usando el siguiente comando:

nano /etc/nginx/conf.d/glassfish.conf

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

Guarde y cierre el archivo, luego verifique el Nginx para cualquier error de sintaxis usando el siguiente comando:

nginx -t

Si todo est√° bien, obtendr√° el siguiente resultado:

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

A continuación, reinicie el servicio Nginx para aplicar los cambios:

systemctl restart nginx

También puede verificar el estado de Nginx con el siguiente comando:

systemctl status nginx

Deberías obtener el siguiente resultado:

? 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 funcionar con la interfaz web de Glassfish. Ahora puede acceder a la interfaz web de Glassfish usando la URL http://glassfish.ejemplo.com.

Conclusión

¡Felicidades! Ha instalado correctamente el servidor Glassfish con Nginx como proxy inverso en Debian 11. Ahora puede comenzar a implementar su aplicación basada en Java en el servidor Glassfish. No dude en preguntarme si tiene alguna pregunta.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *