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.