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
- Un servidor que ejecuta Debian 11.
- Un nombre de dominio válido apuntado con la IP de su servidor.
- Se configura una contraseña raíz 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. Puede 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:
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. Puede 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://your-server-ip:8080 . Debería ver la siguiente página:
A continuación, acceda a la interfaz de administración de Glassfish mediante la URL https://your-server-ip:4848 . Será redirigido a la página de inicio de sesión de Glassfish:
Proporcione su nombre de usuario y contraseña de administrador y haga clic en Iniciar sesión botón. Debería ver la interfaz de administración de Glassfish en la siguiente página:
Haga clic en el servidor en el panel izquierdo, debería ver la siguiente pantalla:
Desde aquí, puede reiniciar, detener y ver los registros de Glassfish.
Haga clic en los Nodos en el panel izquierdo, debería ver la información del nodo Glassfish en la siguiente pantalla:
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 comprobar 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 mediante la URL http://glassfish.example.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. Siéntase libre de preguntarme si tiene alguna pregunta.