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:
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:
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:
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:
Haz clic en el servidor en el panel izquierdo, deberías ver la siguiente pantalla:
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:
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.