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 CentOS7.6 (1810)
Verzia Apache2.4.6
Verzia Tomcatu7.0.76
Verzia JavyOpenJDK 1.8.0_272 64bit

Obsah

  1. Inštalácia
  2. Historický postup konfigurácie Tomcatu
  3. Zhrnutie

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.

profile


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.

Úvodná stránka Apache 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.

httpd.conf


<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.

Úvodná stránka Tomcatu otvorená cez Apache

Po úspešnom teste Tomcat zastavte.

[root@hostname ~]# tomcat stop

Nasledujúca schéma znázorňuje prístup cez Apache a konektor AJP.

Schéma prístupu k Tomcatu cez Apache a AJP

Predchádzajúci priamy test bez Apache používal nasledujúcu cestu.

Schéma priameho prístupu ku konektoru Tomcatu

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.