Apache Tomcat v sistemu CentOS: namestitev, systemd in varne privzete nastavitve


Datum objave:

Posodobljeno:


Tehnični članki > Apache Tomcat v sistemu CentOS: namestitev, systemd in varne privzete nastavitve

Stanje in varna uporaba v letu 2026

Sklep: Najprej izberite podprti in medsebojno združljivi različici Tomcata ter JDK. Storitev nato zaženite z namenskim neprijavnim uporabnikom prek pregledane enote systemd. Konfiguracijo in uvedene aplikacije ločite od nespremenljivih binarnih datotek ter izpostavite samo povezovalnike, ki jih zahteva arhitektura.

Kaj boste izvedeli

  • Kako se povezujejo združljivost z Javo, vir namestitve, identiteta storitve, lastništvo datotek, dnevniki in vrstni red zagona.
  • Zakaj starih fiksnih nastavitev velikosti kopice in zbiralnika pomnilnika ne smete kopirati brez meritev.
  • Kako ločiti prvotni paketni postopek za CentOS 7 od današnje podprte uvedbe.

Komu je članek namenjen? Skrbnikom Linuxa, ki vzdržujejo ali selijo storitev Tomcat.

Opomba za leto 2026: Spodnji postopek opisuje starejši paket za CentOS 7 in vključuje možnosti JVM, ki so lahko v sedanji Javi odstranjene ali neprimerne. Tomcat 7 je dosegel konec življenjske dobe; preverite uradno matriko različic, izberite podprto vejo ter pred produkcijsko uporabo preglejte enoto storitve, uporabnika in dovoljenja.

Varnostna opomba: Ukazi in konfiguracijski primeri iz prvotnega članka niso bili znova preizkušeni v sodobnem produkcijskem okolju. Pred uporabo v ločenem preizkusnem okolju preverite podprte različice, izdelajte varnostne kopije ter določite nadzor dostopa in postopek povrnitve.

Uradni viri

Pregled

Članek prikazuje prvotni postopek namestitve in zagona Tomcata v sistemu CentOS 7.

Vključuje tudi zgodovinski primer povezave z Apachejem ter spremembo poti dnevnikov. Na podprtem sistemu nastavitve prilagodite trenutni različici Tomcata in Jave.

Prvotni primer uporablja naslednje različice:

Različica sistema CentOS7.6 (1810)
Različica Apacheja2.4.6
Različica Tomcata7.0.76
Različica JaveOpenJDK 1.8.0_272, 64-bitni

Kazalo vsebine

  1. Namestitev
  2. Osnovna nastavitev
  3. Povzetek

1. Namestitev

Ta razdelek prikazuje namestitev starega paketnega Tomcata.

1-1. Namestitev programa Tomcat

Stari postopek namesti Tomcat z ukazom yum in skrbniškimi pravicami. Na sedanjem sistemu preverite različico paketa in trajanje podpore.

[username@hostname ~]$ su -
[root@hostname ~]# yum -y install tomcat

2. Osnovna nastavitev

Paket yum v prvotnem okolju ustvari pot "/usr/share/tomcat" in povezave do konfiguracijskih imenikov. Datoteke spreminjajte samo na mestih, ki jih predvideva paket, da nadgradnja ne prepiše lokalnih nastavitev.

2-1. Nastavitev poti Tomcata

CATALINA_HOME določa osnovni namestitveni imenik Tomcata.

Globalna sprememba ni potrebna, če datoteka tomcat.conf že določa »CATALINA_HOME="/usr/share/tomcat"«. Najprej preverite '/usr/share/tomcat/conf/tomcat.conf'.

Stari postopek je manjkajočo vrednost dodal v /etc/profile, vendar je za sistemsko storitev primerneje spremenljivko določiti v paketni konfiguraciji ali enoti storitve.

[root@hostname ~]# vi /etc/profile

Stari primer na konec datoteke doda naslednji vrstici.

profile


CATALINA_HOME=/usr/share/tomcat
export CATALINA_HOME

S tem stari postopek določi spremenljivko okolja Tomcata.

Tomcat potrebuje tudi združljiv JDK. Če Java še ni nameščena, uporabite postopek za podprto različico.

Namestitev OpenJDK v sistemu CentOS in izbira privzete različice Jave

Ukaz 'yum install java-1.8.0-openjdk' je zgodovinski primer za uporabljeno različico; ne izbira samodejno ustreznega JDK za sedanji Tomcat.

2-2. Preverjanje zagona

Pred nadaljnjo konfiguracijo preverite, ali se Tomcat zažene in ali v dnevnikih ni napak.

Paketna namestitev v prvotnem okolju ni vključevala predstavitvenih spletnih aplikacij, zato jih je stari postopek namestil ločeno. V produkciji nepotrebnih predstavitvenih in upravljalnih aplikacij ne nameščajte.

[root@hostname ~]# yum -y install tomcat-webapps

Stari primer nato v požarnem zidu odpre vrata 8080. Če je Tomcat dostopen samo prek obratnega posredniškega strežnika na istem gostitelju, teh vrat ne izpostavljajte javnemu omrežju.

[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:

Vrednost "ports: 8080/tcp" potrjuje, da je pravilo dodano. Nato stari postopek zažene Tomcat.

[root@hostname ~]# tomcat start

V prvotnem lokalnem primeru se v brskalniku odpre "http://192.168.50.10:8080/". Uspešen odziv in spodnja stran potrdita osnovni zagon, ne pa še produkcijske varnosti.

Privzeta stran Apache Tomcat na vratih 8080

Stari postopek po uspešnem preizkusu Tomcat ustavi.

[root@hostname ~]# tomcat stop

2-3. Povezava Apacheja in Tomcata

Ta nastavitev je potrebna le, če Apache deluje kot obratni posredniški strežnik pred Tomcatom. Tomcat lahko sam sprejema zahteve HTTP, Apache pa lahko pred njim zaključuje TLS, uveljavlja skupna pravila in streže statično vsebino.

Začetni koraki za strežnik CentOS 7 so opisani v ločenem članku.

Začetna nastavitev strežnika CentOS 7: podedovani kontrolni seznam za sodoben Linux

Spodnji zgodovinski primer spremeni konfiguracijo Apacheja tako, da vse zahteve posreduje Tomcatu prek AJP. Predvideva konfiguracijsko pot '/etc/httpd/'. Sedanjo nastavitev AJP omejite na zaupanja vredno omrežje, uporabite skrivnost povezovalnika in preverite trenutno sintakso; po potrebi namesto AJP uporabite HTTP.

[root@hostname ~]# vi /etc/httpd/conf/httpd.conf

Stari primer na konec datoteke "httpd.conf" doda naslednji blok.

httpd.conf


<Location / >
  ProxyPass ajp://localhost:8009/
  Order allow,deny
  Allow from all
</Location>

Če še nista dejavna, stari postopek omogoči naslednja modula z odstranitvijo začetnega znaka #.

• LoadModule proxy_module modules/mod_proxy.so

• LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

Po preverjanju konfiguracije zaženite oziroma nadzorovano znova naložite Apache ter zaženite Tomcat.

[root@hostname ~]# apachectl stop
[root@hostname ~]# apachectl start
[root@hostname ~]# tomcat start

V prvotnem lokalnem primeru se v brskalniku odpre "http://192.168.50.10/" brez vrat 8080, ker zahtevo sprejme Apache.

Prikaz strani Tomcat potrdi osnovno posredovanje.

Stran Apache Tomcat prek posredniškega strežnika Apache

Stari postopek po preizkusu Tomcat ustavi.

[root@hostname ~]# tomcat stop

Naslednji diagram prikazuje dostop prek Apacheja do Tomcata.

Pot zahteve od odjemalca prek Apacheja do Tomcata

Prejšnji neposredni preizkus na vratih 8080 je imel naslednjo pot.

Neposredna pot zahteve od odjemalca do Tomcata na vratih 8080

2-4. Kopica JVM in dnevniki GC

Kopica je del pomnilnika JVM za objekte, dnevniki GC pa beležijo delovanje zbiralnika pomnilnika. Velikost kopice in beleženje se nastavita z možnostmi JVM; v prvotnem paketu so bile zapisane v datoteki "tomcat.conf". Vrednosti izberite na podlagi meritev in omejitev celotnega gostitelja.

[root@hostname ~]# vi /usr/share/tomcat/conf/tomcat.conf

Stari primer na konec datoteke doda naslednjo vrednost.

CATALINA_OPTS="-server -XX:MaxMetaspaceSize=256m -XX:MetaspaceSize=256m -Xmx256m -Xms256m -Xloggc:/var/log/tomcat/gc.log -XX:+PrintGCDetails"

Po zagonu Tomcata ukaz ps v starem okolju pokaže možnosti (-server -XX:MaxMetaspaceSize=256m -XX:MetaspaceSize=256m -Xmx256m -Xms256m -Xloggc:/var/log/tomcat/gc.log -XX:+PrintGCDetails). Na sedanji Javi najprej preverite, katere možnosti so še podprte.

[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

Možnosti -Xms256m in -Xmx256m nastavita začetno in največjo velikost kopice na 256 MB; JVM poleg kopice uporablja še metaprostor, sklade niti, neposredni pomnilnik in druge vire.

Stara možnost -Xloggc zapisuje dnevnik delovanja zbiralnika pomnilnika v datoteko "/var/log/tomcat/gc.log".

Imenik "/var/log/tomcat/" je pripravljen v naslednjem razdelku.

2-5. Nastavitev dnevnikov

Stari postopek ustvari imenik dnevnikov in v datotekah '/usr/share/tomcat/conf/logging.properties' ter '/usr/share/tomcat/conf/server.xml' spremeni ciljne poti.

Imenik ustvari z naslednjima ukazoma.

[root@hostname ~]# mkdir /var/log/tomcat
[root@hostname ~]# chmod 755 /var/log/tomcat

Dovoljenja 755 sama po sebi ne zagotovijo, da lahko uporabnik storitve Tomcat piše v imenik. Preverite lastništvo, skupino, umask, vrtenje dnevnikov in oznake SELinux ter drugim uporabnikom ne omogočite branja občutljivih dnevnikov.

Nato stari postopek spremeni "logging.properties".

[root@hostname ~]# vi /usr/share/tomcat/conf/logging.properties

Poti posameznih obdelovalnikov spremeni na naslednji način.

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.


Nato spremeni datoteko 'server.xml'.

[root@hostname ~]# vi /usr/share/tomcat/conf/server.xml

Pot dnevnika dostopa spremeni na naslednji način.

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="/var/log/tomcat"

prefix="localhost_access" suffix=".txt"
pattern="combined" />

2-6. Nastavitev samodejnega zagona

Za produkcijsko storitev omogočite samodejni zagon prek upravljalnika storitev. Spodnji ukazi veljajo za paketno enoto systemd iz prvotnega CentOS 7; na sedanji distribuciji preverite dejansko ime enote, uporabnika storitve, odvisnosti in omejitve.

[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. Nastavitev poštne seje

Ta nastavitev je potrebna le, če aplikacija poštno sejo pridobiva prek vira JNDI, ki ga upravlja Tomcat. Pri sodobni aplikaciji preverite, ali uporablja Jakarta Mail ali starejši JavaMail in katera različica je združljiva z izbranim Tomcatom.

Stari primer v imenik knjižnic Tomcata (/usr/share/tomcat/lib/) doda naslednji datoteki JAR in njuna dovoljenja uskladi z drugimi knjižnicami. Odvisnosti pridobite iz zaupanja vrednega repozitorija in preverite njihovo celovitost.

•javax.activation-1.2.0.jar

•javax.mail.jar

Nato spremeni 'context.xml'.

[root@hostname ~]# vi /usr/share/tomcat/conf/context.xml

Stari primer na konec context.xml doda naslednji vir. Sintaksa javax.mail velja za uporabljeni stari sklad in je ne prenašajte neposredno na okolje Jakarta brez preverjanja.

<Context>
    <Resource name="mail/Session" auth="Container"
              type="javax.mail.Session"
              />
</Context>


3. Povzetek

Prvotni postopek zajema paketno namestitev Tomcata, poti, preverjanje zagona, povezavo z Apachejem, možnosti JVM, dnevnike, systemd in poštno sejo.

Za sodobno uvedbo izberite podprti različici Tomcata in JDK, uporabite namenskega uporabnika z najmanjšimi dovoljenji, javno ne izpostavljajte nepotrebnih povezovalnikov, možnosti JVM določite z meritvami ter preverite dnevnike in enoto storitve.

Pri uporabi v novejšem okolju upoštevajte tudi opombe o različicah in varnosti na začetku članka.