Tomcat je webový server s otevřeným zdrojovým kódem pro aplikace založené na Javě. Používá se pro nasazení aplikací Java Servlet a JSP. Java servlety jsou malé programy definující, jak server zpracovává požadavky a odpovědi. Tomcat funguje jako open-source implementace technologií Java Servlet, JavaServer Pages, Java Expression Language a Java WebSocket.
K dispozici je několik verzí Tomcatu. V našem tutoriálu probereme instalaci Tomcat 10. Pokud chcete nainstalovat Tomcat 9, pokyny budou stejné. Pokud dojde k nějakým změnám, budou specifikovány v tutoriálu.
Pro náš tutoriál nainstalujeme Tomcat 10 spolu se serverem Nginx, aby fungoval jako reverzní proxy a chránil jej pomocí SSL. Existuje verze Tomcat 10.1.x, což je nejnovější alfa verze Tomcatu, ale nebudeme ji instalovat.
Předpoklady
-
Server se systémem Rocky Linux 8.5
-
Uživatel bez sudo s oprávněními superuživatele.
-
Ujistěte se, že je vše aktualizováno.
$ sudo dnf update
-
Balíčky potřebné pro instalaci.
$ sudo dnf install wget tar
Krok 1 – Instalace Java
Tomcat 9 a 10 vyžadují Java 8 a novější. Nainstalujeme OpenJDK 11, open-source implementaci platformy Java.
Spuštěním následujícího příkazu nainstalujte OpenJDK.
$ sudo dnf install java-11-openjdk-devel
Ověřte instalaci.
$ java -version openjdk version "11.0.13" 2021-10-19 LTS OpenJDK Runtime Environment 18.9 (build 11.0.13+8-LTS) OpenJDK 64-Bit Server VM 18.9 (build 11.0.13+8-LTS, mixed mode, sharing)
Krok 2 – Vytvoření systémového uživatele
Vytvoříme nového uživatele systému, abychom minimalizovali jakékoli bezpečnostní riziko spuštěním Tomcatu jako uživatel root. Pro nového uživatele nastavíme /opt/tomcat jako domovský adresář.
Spuštěním následujícího příkazu vytvořte nového uživatele systému pro Tomcat.
$ sudo useradd -m -U -d /opt/tomcat -s /bin/false tomcat
Krok 3 – Stáhnout Tomcat
Nejnovější verzi Tomcat v10 lze stáhnout z jeho stránky pro stahování. V době psaní tohoto návodu je v10.0.14 nejnovější dostupná verze. Před stažením Tomcatu zkontrolujte nejnovější verzi.
Použijte wget ke stažení Tomcat.
$ VERSION=10.0.14
$ wget https://dlcdn.apache.org/tomcat/tomcat-10/v${VERSION}/bin/apache-tomcat-${VERSION}.tar.gz
Extrahujte soubor do /opt/tomcat adresář.
$ sudo tar -xf apache-tomcat-${VERSION}.tar.gz -C /opt/tomcat/
Vytvořte symbolický odkaz na nejnovější verzi Tomcat, který ukazuje na instalační adresář Tomcatu.
$ sudo ln -s /opt/tomcat/apache-tomcat-${VERSION} /opt/tomcat/latest
Změňte vlastnictví adresáře na uživatele vytvořeného dříve.
$ sudo chown -R tomcat:tomcat /opt/tomcat
Krok 4 – Vytvoření souboru systémové jednotky
Dalším krokem je vytvoření souboru služby pro server Tomcat, aby mohl být automaticky spuštěn.
Vytvořte a otevřete soubor /etc/systemd/system/tomcat.service pro úpravy.
$ sudo nano /etc/systemd/system/tomcat.service
Vložte následující kód.
[Unit] Description=Apache Tomcat 10 Servlet container Wants=network.target After=network.target [Service] Type=forking User=tomcat Group=tomcat Environment="JAVA_HOME=/usr/lib/jvm/jre" Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom" Environment="CATALINA_BASE=/opt/tomcat/latest" Environment="CATALINA_HOME=/opt/tomcat/latest" Environment="CATALINA_PID=/opt/tomcat/latest/temp/tomcat.pid" Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC" ExecStart=/opt/tomcat/latest/bin/startup.sh ExecStop=/opt/tomcat/latest/bin/shutdown.sh Restart=always [Install] WantedBy=multi-user.target
Uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni k uložení.
Krok 5 – Spuštění a aktivace služby Tomcat
Znovu načtěte servisního démona, abyste povolili službu Tomcat.
$ sudo systemctl daemon-reload
Povolte a spusťte službu Tomcat.
$ sudo systemctl enable tomcat --now
Zkontrolujte stav služby.
$ sudo systemctl status tomcat
? tomcat.service - Apache Tomcat 10 Servlet container
Loaded: loaded (/etc/systemd/system/tomcat.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2021-12-17 15:54:28 UTC; 24s ago
Process: 86219 ExecStart=/opt/tomcat/latest/bin/startup.sh (code=exited, status=0/SUCCESS)
Main PID: 86226 (java)
Tasks: 19 (limit: 11411)
Memory: 132.7M
CGroup: /system.slice/tomcat.service
??86226 /usr/lib/jvm/jre/bin/java -Djava.util.logging.config.file=/opt/tomcat/latest/conf/logging.properties>
Dec 17 15:54:27 howtoforge systemd[1]: Starting Apache Tomcat 10 Servlet container...
Dec 17 15:54:28 howtoforge systemd[1]: Started Apache Tomcat 10 Servlet container.
Krok 6 – Konfigurace brány firewall
Rocky Linux používá Firewalld Firewall. Zkontrolujte stav brány firewall.
$ sudo firewall-cmd --state running
Povolit porty HTTP a HTTPS.
$ sudo firewall-cmd --permanent --add-service=http $ sudo firewall-cmd --permanent --add-service=https
Chcete-li změny povolit, znovu načtěte bránu firewall.
$ sudo firewall-cmd --reload
Krok 7 – Konfigurace webového rozhraní správy Tomcat
Webové rozhraní pro správu bude přístupné až poté, co pro něj vytvoříme přihlašovací údaje.
Uživatelé a role Tomcat jsou definovány v /opt/tomcat/latest/conf/tomcat-users.xml soubor. Otevřete soubor pro úpravy.
$ sudo nano /opt/tomcat/latest/conf/tomcat-users.xml
Přidejte následující řádky před </tomcat-users čára. Nahraďte uživatelské jméno a heslo svými přihlašovacími údaji.
Vyberte různé přihlašovací údaje pro portály Tomcat pro správce a správce.
<tomcat-users>
<!--
Comments
-->
<role rolename="manager-gui"/>
<user username="manager" password="managerpassword" roles="manager-gui" />
<role rolename="admin-gui"/>
<user username="admin" password="adminpassword" roles="admin-gui"/>
</tomcat-users>
Uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni k uložení.
Ve výchozím nastavení je rozhraní Tomcat přístupné pouze z localhost. Pokud k němu potřebujete mít přístup odkudkoli, musíte jej nakonfigurovat.
Otevřete /opt/tomcat/latest/webapps/manager/META-INF/context.xml pro úpravy.
$ sudo nano /opt/tomcat/latest/webapps/manager/META-INF/context.xml
Odstraňte následující řádky nebo je zakomentujte, jak je uvedeno níže, tím, že je uzavřete do <!-- a --> .
<!--
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
-->
Povolení přístupu z jakékoli IP adresy představuje bezpečnostní riziko. Můžete jej omezit povolením přístupu pouze z vaší veřejné IP adresy. Pokud je vaše veřejná IP adresa 22.22.22.22 a poté změňte řádek následovně.
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|22.22.22.22" />
Seznam povolených IP adres je oddělen svislým pruhem (| ). Můžete přidat jednu IP adresu nebo použít regulární výraz.
Uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni k uložení.
Proveďte stejné změny v souboru /opt/tomcat/latest/webapps/host-manager/META-INF/context.xml také.
Po dokončení restartujte server Tomcat.
$ sudo systemctl restart tomcat
Krok 8 – Instalace protokolu SSL
Chcete-li nainstalovat certifikát SSL pomocí Let's Encrypt, musíme nainstalovat nástroj Certbot.
Nejprve si musíte stáhnout a nainstalovat úložiště EPEL.
$ sudo dnf install epel-release
Spuštěním následujících příkazů nainstalujte Certbot.
$ sudo dnf install certbot
Vygenerujte certifikát SSL.
$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d tomcat.example.com
Výše uvedený příkaz stáhne certifikát do /etc/letsencrypt/live/tomcat.example.com adresář na vašem serveru.
Vytvořte skupinu Diffie-Hellman certifikát.
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Vytvořte adresář webroot s výzvou pro automatické obnovení Let's Encrypt.
$ sudo mkdir -p /var/lib/letsencrypt
Vytvořte úlohu Cron pro obnovení SSL. Poběží každý den, aby se zkontroloval certifikát a v případě potřeby se obnoví. Nejprve vytvořte soubor /etc/cron.daily/certbot-renew a otevřete jej pro úpravy.
$ sudo nano /etc/cron.daily/certbot-renew
Vložte následující kód.
#!/bin/sh certbot renew --cert-name tomcat.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"
Uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni.
Změňte oprávnění k souboru úlohy, aby byl spustitelný.
$ sudo chmod +x /etc/cron.daily/certbot-renew
Krok 9 – Instalace Nginx
Rocky Linux 8.5 je dodáván s nejnovější stabilní verzí Nginx. Nainstalujte jej pomocí následujícího příkazu.
$ sudo dnf module install nginx:1.20
Ověřte instalaci.
$ nginx -v nginx version: nginx/1.20.1
Povolte a spusťte službu Nginx.
$ sudo systemctl enable nginx --now
Vytvořte a otevřete soubor /etc/nginx/conf.d/tomcat.conf pro úpravy.
$ sudo nano /etc/nginx/conf.d/tomcat.conf
Vložte do něj následující kód.
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name tomcat.example.com;
access_log /var/log/nginx/tomcat.access.log;
error_log /var/log/nginx/tomcat.error.log;
# SSL
ssl_certificate /etc/letsencrypt/live/tomcat.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/tomcat.example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/tomcat.example.com/chain.pem;
ssl_session_timeout 5m;
ssl_session_cache shared:MozSSL:10m;
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
ssl_stapling on;
ssl_stapling_verify on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
resolver 8.8.8.8;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
# enforce HTTPS
server {
listen 80;
listen [::]:80;
server_name tomcat.example.com;
return 301 https://$host$request_uri;
}
Uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni po dokončení.
Otevřete soubor /etc/nginx/nginx.conf pro úpravy.
$ sudo nano /etc/nginx/nginx.conf
Přidejte následující řádek před řádek include /etc/nginx/conf.d/*.conf; .
server_names_hash_bucket_size 64;
Uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni.
Ověřte syntaxi konfiguračního souboru Nginx.
$ sudo nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Restartujte službu Nginx, abyste povolili novou konfiguraci.
$ sudo systemctl restart nginx
Krok 10 – Spusťte TomCat
Spusťte https://tomcat.example.com ve vašem prohlížeči a otevře se následující obrazovka.

Nyní můžete přistupovat na stránky Stav serveru, Správce aplikací a Správce hostitelů pomocí přihlašovacích údajů, které jsme nakonfigurovali v kroku 7.
Závěr
Tímto končí náš tutoriál o instalaci a konfiguraci serveru Tomcat na serveru založeném na Rocky Linuxu 8.5 a jeho poskytování přes reverzní proxy server Nginx a použití protokolu SSL k jeho ochraně. Pokud máte nějaké dotazy, napište je do komentářů níže.