GlassFish è un server di applicazioni open source utilizzato per la distribuzione di applicazioni Java. Supporta diverse tecnologie basate su Java, tra cui JPA, JavaServer Faces, JMS, RMI e molte altre tecnologie basate su Java. Fornisce un'interfaccia basata sul Web e a riga di comando per la gestione delle applicazioni Java e dei loro componenti. GlassFish ti consente di creare applicazioni portatili e scalabili che possono essere facilmente integrate con le tecnologie legacy.
In questo tutorial, ti mostrerò come installare il server Glassfish con Nginx come proxy inverso su Debian 11.
Prerequisiti
- Un server che esegue Debian 11.
- Un nome di dominio valido puntato all'IP del tuo server.
- Sul server è configurata una password di root.
Installa Java
Glassfish è un software applicativo basato su Java, quindi Java deve essere installato sul tuo server. Se non è installato puoi installarlo eseguendo il seguente comando:
apt-get install default-jdk unzip -y
Una volta installato Java, è possibile verificare l'installazione Java utilizzando il seguente comando:
java --version
Otterrai il seguente output:
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 volta terminato, puoi procedere al passaggio successivo.
Scarica Glassfish
Innanzitutto, dovrai scaricare l'ultima versione di Glassfish dal sito Web di Eclipse. Puoi scaricarlo usando il comando wget come mostrato di seguito:
wget https://download.eclipse.org/ee4j/glassfish/glassfish-6.1.0.zip
Una volta completato il download, estrai il file scaricato nella directory /opt:
unzip glassfish-6.1.0.zip -d /opt/
Una volta terminato, puoi procedere al passaggio successivo.
Crea un file di servizio Systemd per Glassfish
Successivamente, dovrai creare un file di servizio systemd per la gestione del servizio Glassfish. Puoi crearlo usando il seguente comando:
nano /usr/lib/systemd/system/glassfish.service
Aggiungi le seguenti righe:
[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
Salva e chiudi il file quando hai finito. Quindi, ricarica il demone systemd per applicare le modifiche.
systemctl daemon-reload
Quindi, avvia il servizio Glassfish e abilitalo per l'avvio al riavvio del sistema:
systemctl start glassfish
systemctl enable glassfish
Puoi anche verificare il servizio Glassfish utilizzando il seguente comando:
systemctl status glassfish
Otterrai il seguente output:
? 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 volta terminato, puoi procedere al passaggio successivo.
Imposta password amministratore Glassfish
Per impostazione predefinita, Glassfish è accessibile senza alcuna password. Quindi è una buona idea proteggerlo impostando una password amministratore. Puoi farlo eseguendo il seguente comando:
/opt/glassfish6/bin/asadmin --port 4848 change-admin-password
Ti verrà chiesto di fornire il nome utente amministratore come mostrato di seguito:
Enter admin user name [default: admin]>admin
Fornisci il nome utente amministratore predefinito e premi il tasto Invio. Ti verrà chiesto di fornire la password amministratore esistente:
Enter the admin password>
Basta premere il tasto Invio. Ti verrà chiesto di impostare una nuova password amministratore come mostrato di seguito:
Imposta la tua password protetta e premi Invio. Otterrai il seguente output:
Command change-admin-password executed successfully.
Successivamente, si consiglia anche di abilitare HTTPS su Glassfish. Puoi farlo eseguendo il seguente comando:
/opt/glassfish6/bin/asadmin --port 4848 enable-secure-admin
Ti verrà chiesto di fornire il nome utente e la password di amministratore per abilitare 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.
Infine, riavvia il servizio Glassfish per applicare le modifiche:
systemctl restart glassfish
Una volta terminato, puoi procedere al passaggio successivo.
Accedi all'interfaccia web di GlassFish
A questo punto Glassfish è installato e funzionante. Per impostazione predefinita, l'interfaccia web di Glassfish è in ascolto sulla porta 8080 mentre l'interfaccia di amministrazione è in ascolto sulla porta 4848 . Innanzitutto, accedi all'interfaccia web di Glassfish utilizzando l'URL http://your-server-ip:8080 . Dovresti vedere la seguente pagina:
Quindi, accedi all'interfaccia di amministrazione di Glassfish utilizzando l'URL https://your-server-ip:4848 . Verrai reindirizzato alla pagina di accesso di Glassfish:
Fornisci il nome utente e la password dell'amministratore e fai clic su Accedi pulsante. Dovresti vedere l'interfaccia di amministrazione di Glassfish nella pagina seguente:
Fai clic sul server nel riquadro di sinistra, dovresti vedere la seguente schermata:
Da qui puoi riavviare, interrompere e visualizzare i log di Glassfish.
Fai clic sui Nodi nel riquadro di sinistra, dovresti vedere le informazioni sul nodo Glassfish nella schermata seguente:
Configura Nginx come proxy inverso per Glassfish
È una buona idea configurare Nginx come proxy inverso per accedere all'interfaccia web di Glassfish. In questo modo puoi accedere alla tua applicazione senza utilizzare la porta 8080 .
Per farlo, installa prima il pacchetto Nginx con il seguente comando:
apt-get install nginx -y
Una volta installato, crea un file di configurazione dell'host virtuale Nginx utilizzando il comando seguente:
nano /etc/nginx/conf.d/glassfish.conf
Aggiungi le seguenti righe:
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/; } }
Salva e chiudi il file, quindi verifica Nginx per eventuali errori di sintassi utilizzando il seguente comando:
nginx -t
Se tutto va bene, otterrai il seguente output:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Quindi, riavvia il servizio Nginx per applicare le modifiche:
systemctl restart nginx
Puoi anche controllare lo stato di Nginx con il seguente comando:
systemctl status nginx
Dovresti ottenere il seguente output:
? 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.
A questo punto, Nginx è installato e configurato per servire l'interfaccia web di Glassfish. Ora puoi accedere all'interfaccia web di Glassfish utilizzando l'URL http://glassfish.example.com .
Conclusione
Congratulazioni! hai installato correttamente il server Glassfish con Nginx come proxy inverso su Debian 11. Ora puoi iniziare a distribuire la tua applicazione basata su Java sul server Glassfish. Sentiti libero di chiedermi se hai domande.