Apache Tomcat na CentOS: inštalácia, systemd a bezpečné predvolené nastavenia
Dátum vydania:
Aktualizované:
Technické články > Apache Tomcat na CentOS: inštalácia, systemd a bezpečné predvolené nastavenia
Stav a bezpečné používanie v roku 2026
Záver: Najprv vyberte podporovanú verziu Tomcatu a kompatibilný JDK. Službu spúšťajte pod vyhradeným systémovým účtom bez možnosti prihlásenia, používajte skontrolovanú jednotku systemd, oddeľte konfiguráciu a aplikácie od binárnych súborov a sprístupnite iba potrebné konektory.
Čo sa naučíte
- Ako spolu súvisia kompatibilita Javy, zdroj inštalácie, účet služby, vlastníctvo súborov, protokoly a poradie spustenia.
- Prečo bez meraní nekopírovať pevne nastavené historické voľby pre haldu a zber odpadu.
- Ako rozlíšiť pôvodné rozloženie balíka CentOS 7 od aktuálne podporovaného nasadenia.
Pre koho je to určené: Správcovia systému Linux, ktorí spravujú alebo migrujú službu Tomcat.
Kontext v roku 2026: Návod nižšie vychádza zo starého balíka Tomcatu pre CentOS 7 a obsahuje voľby JVM, ktoré už môžu byť odstránené alebo nevhodné. Tomcat 7 nie je podporovaný; pred produkčným použitím skontrolujte oficiálnu maticu verzií, zvoľte podporovanú vetvu a overte jednotku služby aj prístupové oprávnenia.
Bezpečnostná poznámka: Príkazy a príklady konfigurácie v pôvodnom článku neboli znovu spustené v aktuálnom produkčnom prostredí. Pred ich použitím overte podporované verzie, zálohy, prístupové oprávnenia a postup obnovy v oddelenom testovacom prostredí.
Hlavné oficiálne zdroje
Prehľad
Tento historický postup opisuje inštaláciu a spustenie Tomcatu v systéme CentOS 7.
Zachytáva aj vtedajšie prepojenie s Apache HTTP Serverom a zmenu cieľového adresára protokolov. Obe časti treba prispôsobiť podporovanej verzii Tomcatu a aktuálnemu balíku operačného systému.
V pôvodnom prostredí boli použité tieto verzie:
| Verzia systému CentOS | 7.6 (1810) |
|---|---|
| Verzia Apache | 2.4.6 |
| Verzia Tomcatu | 7.0.76 |
| Verzia Javy | OpenJDK 1.8.0_272 64bit |
1. Inštalácia
Táto časť zaznamenáva inštaláciu balíka Tomcatu v pôvodnom prostredí.
1-1. Inštalácia Tomcatu
Pôvodný systém nainštaloval Tomcat pomocou správcu yum pod účtom root.
[username@hostname ~]$ su -
[root@hostname ~]# yum -y install tomcat
2. Historický postup konfigurácie Tomcatu
Balík nainštalovaný pomocou yum vytvoril adresár "/usr/share/tomcat". Obsahoval aj odkazy na umiestnenia konfiguračných a ďalších súborov spravovaných balíkom.
2-1. Nastavenie premennej CATALINA_HOME
Ide o shellový ekvivalent nastavenia premennej prostredia vo Windows. Služba spravovaná systemd však nemusí zdediť používateľský profil, preto premenné služby definujte na mieste podporovanom jednotkou dodanou balíkom.
Ak súbor "/usr/share/tomcat/conf/tomcat.conf" už obsahuje nastavenie "CATALINA_HOME="/usr/share/tomcat"", ďalšia zmena nie je potrebná.
Ak nastavenie "CATALINA_HOME="/usr/share/tomcat"" chýbalo, pôvodný postup ho pridal nasledujúcim spôsobom.
[root@hostname ~]# vi /etc/profile
Na koniec súboru pridal nasledujúce riadky.
CATALINA_HOME=/usr/share/tomcat
export CATALINA_HOME
Tým bolo v historickom shellovom prostredí nastavenie premennej Tomcatu dokončené.
Tomcat potrebuje aj kompatibilné behové prostredie Javy. Súvisiaci článok opisuje pôvodné nastavenie OpenJDK; pri aktuálnej inštalácii použite JDK a prostredie služby podporované vybraným balíkom Tomcatu.
Inštalácia OpenJDK na CentOS a nastavenie predvolenej Javy
V pôvodnom prostredí sa Java dala nainštalovať aj príkazom "yum install java-1.8.0-openjdk".
2-2. Overenie spustenia
Nasledujúce kroky overujú, či sa Tomcat v pôvodnom prostredí spustil.
Vtedajší balík dodával predvolenú úvodnú stránku Tomcatu osobitne v balíku "tomcat-webapps". Produkčný server túto ukážkovú aplikáciu nepotrebuje a správcovské ani vzorové aplikácie nemajú byť zbytočne sprístupnené.
[root@hostname ~]# yum -y install tomcat-webapps
Pôvodný test otvoril vo firewalle predvolený port konektora Tomcatu 8080.
[root@hostname ~]# firewall-cmd --permanent --zone=public --add-port=8080/tcp
[root@hostname ~]# firewall-cmd --reload
[root@hostname ~]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: dhcpv6-client http https ssh
ports: 8080/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
Port "8080/tcp" povoľte iba vtedy, keď je priamy sieťový prístup ku konektoru naozaj potrebný. Ak je Apache alebo iná reverzná proxy na rovnakom hostiteľovi, bezpečnejšie môže byť naviazať Tomcat na súkromné rozhranie a port vo firewalle neotvárať. Potom službu spustite.
[root@hostname ~]# tomcat start
Pôvodné laboratórne prostredie otvorilo v prehliadači adresu "http://192.168.50.10:8080/". Úspešný test zobrazil úvodnú stránku Tomcatu.
Po úspešnom teste Tomcat zastavte.
[root@hostname ~]# tomcat stop
2-3. Prepojenie Apache a Tomcatu
Táto časť je voliteľná. Tomcat dokáže obsluhovať HTTP priamo; Apache HTTP Server pridajte iba vtedy, keď potrebujete jeho funkcie pre TLS, smerovanie, riadenie prístupu alebo spoločnú vstupnú vrstvu. Reverzná proxy sama osebe nezaručuje rýchlejšie doručovanie statického obsahu.
Súvisiaci článok zachytáva počiatočné nastavenie servera so systémom CentOS 7.
Počiatočné nastavenie servera CentOS 7: starší kontrolný zoznam pre moderný Linux
Nasledujúca historická konfigurácia Apache odovzdáva zodpovedajúce požiadavky Tomcatu. Predpokladá, že konfiguračný súbor Apache sa nachádza pod adresárom "/etc/httpd/".
[root@hostname ~]# vi /etc/httpd/conf/httpd.conf
Pôvodný postup pridal na koniec súboru "httpd.conf" nasledujúcu konfiguráciu.
<Location / >
ProxyPass ajp://localhost:8009/
Order allow,deny
Allow from all
</Location>
Ak ešte neboli aktívne, konfigurácia vyžadovala odkomentovanie nasledujúcich modulov:
• LoadModule proxy_module modules/mod_proxy.so
• LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
Potom pôvodný postup spustil alebo reštartoval Apache a spustil Tomcat. AJP konektor sprístupnite iba v dôveryhodnej sieti a nakonfigurujte ho podľa dokumentácie podporovanej verzie.
[root@hostname ~]# apachectl stop
[root@hostname ~]# apachectl start
[root@hostname ~]# tomcat start
Pôvodný test otvoril v prehliadači adresu "http://192.168.50.10/".
Ak Apache vráti očakávanú stránku Tomcatu, základná cesta cez proxy funguje. Overte však aj odovzdanie schémy a názvu hostiteľa, spracovanie chýb, časové limity a to, že konektor Tomcatu nie je dostupný mimo určenej hranice dôvery.
Po úspešnom teste Tomcat zastavte.
[root@hostname ~]# tomcat stop
Nasledujúca schéma znázorňuje prístup cez Apache a konektor AJP.
Predchádzajúci priamy test bez Apache používal nasledujúcu cestu.
2-4. Nastavenie haldy a protokolu GC
Halda JVM uchováva objekty aplikácie a protokol zberu odpadu zaznamenáva činnosť GC. Pôvodný postup zadal veľkosť haldy aj nastavenie protokolu vo voľbách spustenia Javy v súbore "tomcat.conf".
[root@hostname ~]# vi /usr/share/tomcat/conf/tomcat.conf
Na koniec súboru pridal nasledujúcu historickú hodnotu.
CATALINA_OPTS="-server -XX:MaxMetaspaceSize=256m -XX:MetaspaceSize=256m -Xmx256m -Xms256m -Xloggc:/var/log/tomcat/gc.log -XX:+PrintGCDetails"
Po spustení Tomcatu pôvodný postup príkazom ps overil, že proces obsahuje voľby (-server -XX:MaxMetaspaceSize=256m -XX:MetaspaceSize=256m -Xmx256m -Xms256m -Xloggc:/var/log/tomcat/gc.log -XX:+PrintGCDetails). Tieto historické voľby nie sú súčasným odporúčaním na ladenie; vo vyšších verziách Javy sa viaceré voľby protokolovania zmenili.
[root@hostname ~]# tomcat start
[root@hostname ~]# ps aux | grep java
/usr/lib/jvm/jre/bin/java -Djavax.sql.DataSource.Factory=org.apache.commons.dbcp.BasicDataSourceFactory -server -XX:MaxMetaspaceSize=256m -XX:MetaspaceSize=256m -Xmx256m -Xms256m -Xloggc:/var/log/tomcat/gc.log -XX:+PrintGCDetails -classpath /usr/share/tomcat/bin/bootstrap.jar:/usr/share/tomcat/bin/tomcat-juli.jar:/usr/share/java/commons-daemon.jar -Dcatalina.base=/usr/share/tomcat -Dcatalina.home=/usr/share/tomcat -Djava.endorsed.dirs= -Djava.io.tmpdir=/var/cache/tomcat/temp -Djava.util.logging.config.file=/usr/share/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager org.apache.catalina.startup.Bootstrap start
Voľby "-Xms256m" a "-Xmx256m" nastavili počiatočnú aj maximálnu veľkosť haldy na 256 MB. Neobmedzujú celkovú pamäť procesu JVM, ktorá zahŕňa aj metaspace, vlákna, natívne knižnice a ďalšie oblasti.
Protokol GC sa zapisoval do súboru "gc.log" v adresári "/var/log/tomcat/".
Nasledujúca časť vytvára tento adresár a nastavuje aj ostatné protokoly.
2-5. Zmena nastavení protokolov
Pôvodný postup vytvoril adresár pre protokoly Tomcatu a zmenil cesty v súboroch "/usr/share/tomcat/conf/logging.properties" a "/usr/share/tomcat/conf/server.xml".
Adresár vytvoril nasledujúcimi príkazmi.
[root@hostname ~]# mkdir /var/log/tomcat
[root@hostname ~]# chmod 755 /var/log/tomcat
Režim 755 sám osebe nezaručuje právo Tomcatu zapisovať. Skontrolujte vlastníka adresára, účet služby a kontext SELinux; nedôveryhodní používatelia nesmú protokoly meniť.
Potom pôvodný postup upravil súbor "logging.properties".
[root@hostname ~]# vi /usr/share/tomcat/conf/logging.properties
Cieľové adresáre zmenil takto.
1catalina.org.apache.juli.FileHandler.level = FINE
1catalina.org.apache.juli.FileHandler.directory = /var/log/tomcat
1catalina.org.apache.juli.FileHandler.prefix = catalina.
2localhost.org.apache.juli.FileHandler.level = FINE
2localhost.org.apache.juli.FileHandler.directory = /var/log/tomcat
2localhost.org.apache.juli.FileHandler.prefix = localhost.
3manager.org.apache.juli.FileHandler.level = FINE
3manager.org.apache.juli.FileHandler.directory = /var/log/tomcat
3manager.org.apache.juli.FileHandler.prefix = manager.
4host-manager.org.apache.juli.FileHandler.level = FINE
4host-manager.org.apache.juli.FileHandler.directory = /var/log/tomcat
4host-manager.org.apache.juli.FileHandler.prefix = host-manager.
Následne upravil súbor "server.xml".
[root@hostname ~]# vi /usr/share/tomcat/conf/server.xml
Cestu prístupového protokolu zmenil takto.
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="/var/log/tomcat"
prefix="localhost_access" suffix=".txt"
pattern="combined" />
2-6. Automatické spustenie služby
Spustenie pri štarte systému má spravovať jednotka systemd dodaná balíkom. Pred jej povolením skontrolujte používateľa služby, premenné prostredia, závislosti a postup zastavenia; nevytvárajte druhú konkurenčnú definíciu služby.
[root@hostname ~]# systemctl enable tomcat
[root@hostname ~]# systemctl is-enabled tomcat
enabled
[root@hostname ~]# systemctl list-unit-files --type=service | grep tomcat
tomcat.service enabled
[root@hostname ~]# systemctl daemon-reload
2-7. Nastavenie odosielania pošty
Táto konfigurácia relácie pošty je potrebná iba vtedy, keď ju nasadená aplikácia vyhľadáva ako zdroj JNDI. Prihlasovacie údaje ukladajte do chráneného úložiska tajomstiev a dodržte aktuálne požiadavky poskytovateľa pošty na TLS.
Pôvodný postup umiestnil nasledujúce súbory JAR do adresára knižníc Tomcatu "/usr/share/tomcat/lib/" a nastavil im rovnaké oprávnenia ako ostatným knižniciam.
• javax.activation-1.2.0.jar
• javax.mail.jar
Potom upravil súbor "context.xml".
[root@hostname ~]# vi /usr/share/tomcat/conf/context.xml
Na koniec súboru "context.xml" pridal nasledujúci zdroj.
<Context>
<Resource name="mail/Session" auth="Container"
type="javax.mail.Session"
/>
</Context>
3. Zhrnutie
Pôvodný postup zahŕňa inštaláciu balíka, výber Javy, prístup ku konektoru, proxy cez Apache, voľby JVM, protokoly a automatické spustenie služby.
Pri súčasnom nasadení vyberte podporovanú kombináciu Tomcatu a JDK, používajte vyhradený systémový účet a jednotku dodanú balíkom, sprístupnite iba potrebné konektory a oddeľte konfiguráciu aj aplikácie od binárnych súborov.
Pred produkčným nasadením overte prístupové oprávnenia, protokoly, správanie služby po reštarte a postup návratu k predchádzajúcej verzii.
Technické články
Profil
Kontakt



