Tomcat è un server di applicazioni gratuito, open source e leggero utilizzato per distribuire applicazioni basate su Java. Può essere utilizzato come server autonomo o combinato con altri server come Apache e Nginx. Fornisce la funzionalità estesa per interagire con i servlet Java e implementa anche diverse specifiche tecniche della piattaforma Java. Attualmente, Tomcat è uno dei server di applicazioni più utilizzati per Java.
In questo tutorial, ti mostrerò come installare Tomcat 9 con Nginx su Debian 10.
Prerequisiti
- Un server che esegue Debian 10.
- Un nome di dominio valido puntato all'IP del tuo server.
- Sul tuo server è configurata una password di root.
Per iniziare
Prima di iniziare, è una buona idea aggiornare la cache APT all'ultima versione. Puoi aggiornarlo eseguendo il seguente comando:
apt-get update -y
Una volta che la cache del pacchetto di sistema è aggiornata, puoi procedere al passaggio successivo.
Installa Java
Tomcat è un'applicazione basata su Java, quindi Java deve essere installato nel tuo server. Se non è installato, puoi installarlo con il seguente comando:
apt-get install default-jdk -y
Una volta installato Java, è possibile verificare la versione Java con il seguente comando:
java --version
Dovresti ottenere il seguente output:
openjdk 11.0.9.1 2020-11-04 OpenJDK Runtime Environment (build 11.0.9.1+1-post-Debian-1deb10u2) OpenJDK 64-Bit Server VM (build 11.0.9.1+1-post-Debian-1deb10u2, mixed mode, sharing)
Una volta terminato, puoi procedere al passaggio successivo.
Installa Tomcat
Innanzitutto, dovrai creare un utente dedicato per eseguire il server Tomcat. Puoi crearlo con il seguente comando:
useradd -m -U -d /opt/tomcat -s /bin/false tomcat
Quindi, scarica l'ultima versione di Tomcat utilizzando il seguente comando:
wget https://www-eu.apache.org/dist/tomcat/tomcat-9/v9.0.45/bin/apache-tomcat-9.0.45.tar.gz
Una volta completato il download, estrai il file scaricato con il seguente comando:
tar -xvzf apache-tomcat-9.0.45.tar.gz
Quindi, sposta la directory estratta in /opt con il seguente comando:
mv apache-tomcat-9.0.45 /opt/tomcat/tomcat
Quindi, imposta l'autorizzazione e la proprietà appropriate con il seguente comando:
chown -R tomcat:tomcat /opt/tomcat/tomcat
chmod -R 755 /opt/tomcat/tomcat
Una volta terminato, puoi procedere al passaggio successivo.
Crea un file di servizio Systemd per Tomcat
Successivamente, dovrai creare un file di servizio systemd per gestire il servizio Tomcat. Puoi crearlo con il seguente comando:
nano /etc/systemd/system/tomcat.service
Aggiungi le seguenti righe:
[Unit] Description=Tomcat 9.0 servlet container After=network.target [Service] Type=forking User=tomcat Group=tomcat Environment="JAVA_HOME=/usr/lib/jvm/default-java" Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom" Environment="CATALINA_BASE=/opt/tomcat/tomcat" Environment="CATALINA_HOME=/opt/tomcat/tomcat" Environment="CATALINA_PID=/opt/tomcat/tomcat/temp/tomcat.pid" Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC" ExecStart=/opt/tomcat/tomcat/bin/startup.sh ExecStop=/opt/tomcat/tomcat/bin/shutdown.sh [Install] WantedBy=multi-user.target
Salva e chiudi il file, quindi ricarica il demone systemd con il seguente comando:
systemctl daemon-reload
Quindi, avvia il servizio Tomcat e abilitalo all'avvio al riavvio del sistema con il seguente comando:
systemctl start tomcat
systemctl enable tomcat
Puoi anche verificare lo stato di Tomcat con il seguente comando:
systemctl status tomcat
Dovresti ottenere il seguente output:
? tomcat.service - Tomcat 9.0 servlet container Loaded: loaded (/etc/systemd/system/tomcat.service; disabled; vendor preset: enabled) Active: active (running) since Wed 2021-04-14 05:41:21 UTC; 42s ago Process: 5784 ExecStart=/opt/tomcat/tomcat/bin/startup.sh (code=exited, status=0/SUCCESS) Main PID: 5791 (java) Tasks: 30 (limit: 4701) Memory: 159.1M CGroup: /system.slice/tomcat.service ??5791 /usr/lib/jvm/default-java/bin/java -Djava.util.logging.config.file=/opt/tomcat/tomcat/conf/logging.properties -Djava.util.log Apr 14 05:41:21 debian systemd[1]: Starting Tomcat 9.0 servlet container... Apr 14 05:41:21 debian startup.sh[5784]: Tomcat started. Apr 14 05:41:21 debian systemd[1]: Started Tomcat 9.0 servlet container.
Una volta terminato, puoi procedere al passaggio successivo.
Configura interfaccia Web Tomcat
Successivamente, dovrai definire un utente per accedere all'interfaccia web di Tomcat. Puoi definirlo usando il file tomcat-users.xml:
nano /opt/tomcat/tomcat/conf/tomcat-users.xml
Trova la sezione
<role rolename="admin-gui"/> <role rolename="manager-gui"/> <user username="tomcatadmin" password="password" roles="admin-gui,manager-gui"/>
Salva e chiudi il file quando hai finito.
Per impostazione predefinita, l'interfaccia Web Tomcat è configurata per accedere solo da localhost. Quindi dovrai configurarlo per l'accesso esterno.
Per l'app Manager, modifica la riga seguente:
nano /opt/tomcat/tomcat/webapps/manager/META-INF/context.xml
Per l'app Host Manager, modifica il seguente file:
nano /opt/tomcat/tomcat/webapps/host-manager/META-INF/context.xml
Rimuovere la seguente riga:
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
Salva e chiudi il file, quindi riavvia il servizio Tomcat per applicare le modifiche:
systemctl restart tomcat
Una volta terminato, puoi procedere al passaggio successivo.
Configura Nginx per Tomcat
Successivamente, dovrai installare e configurare Nginx come proxy inverso per Tomcat. Innanzitutto, installa il pacchetto Nginx con il seguente comando:
apt-get install nginx -y
Una volta installato Nginx, dovrai creare un nuovo file di configurazione dell'host virtuale Nginx per Tomcat. Puoi crearlo usando il seguente comando:
nano /etc/nginx/conf.d/tomcat.conf
Aggiungi le seguenti righe:
server { listen 80; server_name tomcat.example.com; root /opt/tomcat/tomcat/webapps/; 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://127.0.0.1:8080/; } }
Salva e chiudi il file, quindi verifica Nginx per eventuali errori di sintassi:
nginx -t
Dovresti vedere 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
Successivamente, verifica lo stato del servizio Nginx con il seguente comando:
systemctl status nginx
Dovresti vedere 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 Wed 2021-04-14 05:57:03 UTC; 1min 38s ago Docs: man:nginx(8) Process: 6852 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Process: 6853 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Main PID: 6854 (nginx) Tasks: 3 (limit: 4701) Memory: 4.0M CGroup: /system.slice/nginx.service ??6854 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; ??6855 nginx: worker process ??6856 nginx: worker process Apr 14 05:57:03 debian systemd[1]: Starting A high performance web server and a reverse proxy server... Apr 14 05:57:03 debian systemd[1]: Started A high performance web server and a reverse proxy server.
A questo punto, Nginx è configurato per accedere a Tomcat. Ora puoi procedere al passaggio successivo.
Accedi all'interfaccia utente Web di Tomcat
Ora apri il tuo browser web e accedi all'interfaccia utente web di Tomcat utilizzando l'URL http://tomcat.example.com . Dovresti vedere la seguente pagina:
Fai clic su Gestore App , dovresti vedere la seguente pagina:
Fornisci il nome utente e la password dell'amministratore dell'app Manager e fai clic su Accedi pulsante. Dovresti vedere la seguente pagina:
Puoi anche fare clic su Gestione host per accedere all'app Host Manager come mostrato di seguito:
Conclusione
Congratulazioni! hai installato con successo Tomcat con Nginx come proxy inverso su Debian 10. Ora puoi distribuire facilmente la tua applicazione Java con Tomcat. Sentiti libero di chiedermi se hai domande.