Condivisione della tecnologia

[Spiegazione dettagliata della directory Tomcat] Cos'altro devi sapere su Tomcat

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Spero che l'articolo possa darti ispirazione e ispirazione ~
Se ritieni che l'articolo ti sia utile,Mi piace+Segui+Raccogli Per favore supporta il blogger~

Note di apertura

Tomcat è ancora attivo nella vita quotidiana degli sviluppatori, ma ne abbiamo una comprensione più approfondita o è sufficiente sapere solo come installarlo, configurarlo e avviarlo? Questo articolo funge da riepilogo e registrazione. Spero che ci sia qualcosa di cui hai bisogno;

Inserisci qui la descrizione dell'immagine

1. Descrizione dell'ambiente di base

Considerando i fattori ambientali, tutti dovrebbero confrontare e analizzare adeguatamente il proprio ambiente software e hardware ~ Si prega di leggere attentamente l'ambiente hardware e software.

1.1 Ambiente hardware

Windows 11 专业版

1.2 Ambiente software

strumenti di sviluppo:Tomcat 9.0

2. Struttura dei file Tomcat

La struttura delle directory dei file è suddivisa principalmente in: bin, conf, lib, logs, temp, webapps, work. La struttura delle directory dei file in Tomcat è relativamente chiara e ogni directory ha la propria特定的功能E用途

Inserisci qui la descrizione dell'immagine

Directory bin 2.1

La directory bin memorizza i file di script di avvio e arresto di Tomcat. Eccone diversi重要的文件Dobbiamo sapere;

  • File che terminano con .sh: script di avvio e arresto su piattaforme Linux o Mac.
  • File che terminano con .bat: script di avvio e arresto su piattaforme Windows.
  • catalina.sh: script di avvio principale di Tomcat, in cui è possibile impostare i parametri JVM.
  • startup.sh e shutdown.sh: utilizzati rispettivamente per avviare e arrestare il server Tomcat.
  • service.bat: utilizzato per registrare il servizio Tomcat in Windows.

2.1.1 avvio e spegnimento

perstartupEshutdown Devi avere molta familiarità con esso. Dobbiamo usarlo ogni giorno per avviare e spegnere rapidamente il server Tomcat. Per quanto riguarda il suffisso bat, dipende dal tipo di sistema operativo.

2.1.2 Catalina

DiCatalinaAnche il file proviene da Tomcat启动脚本,EstartupLa differenza principale è che quest'ultimo专注启动, mentre il primo può ancora passare配置参数per raggiungere altri scopi;

Ad esempio, qui utilizzo catalina per avviare Tomcat, farò questo: inviocatalina.bat start (sistema Windows)
Inserisci qui la descrizione dell'immagine
qui ètomcat的bin目录Eseguito sotto, se configurato环境变量, quindi puoi eseguire questa operazione in qualsiasi posizione, allo stesso modo possiamo anche usarecatalina.bat stopinterrompere il servizio;

Allora come configurare i parametri?

L'approccio usuale è configurare i parametri rilevanti modificando il file catalina. La configurazione dei parametri più comune è JVM e altri contenuti correlati, ad esempio, nel file catalina, qui-Xms512mgià impostatoJVM的初始堆内存è 512 MB,-Xmx1024mgià impostato最大堆内存è 1024 MB,-XX:+UseG1GCAbilitatoG1垃圾回收器-Duser.timezone=Asia/Shanghaigià impostatoJVM的时区

Inserisci qui la descrizione dell'immagine
Dopo la modifica, riavvia Tomcat per rendere effettiva la configurazione; ecco un confronto tra la differenza prima e dopo la configurazione;
Inserisci qui la descrizione dell'immagine
Inserisci qui la descrizione dell'immagine
Il programma si avvia normalmente e possiamo vedere le informazioni sui parametri che abbiamo configurato sulla console;

需要注意的是, nelle situazioni reali non lo facciamo不建议直接在catalina中修改, che non è favorevole all'aggiornamento e alla manutenzione del nostro servizio Tomcat, quindi lo consigliamo通过setenv配置文件 Per configurare i parametri; perché setenv? Diamo un'occhiata al file di configurazione di catalina. Questo paragrafo ci dice che lo script darà un giudizio all'avvio. Se questo file esiste, verrà chiamato automaticamente. Questo file di solito non esiste nella directory tomcat corrente e abbiamo bisogno per crearne manualmente uno noi stessi.
Inserisci qui la descrizione dell'immagine
Dopo aver creato setenv (setenv.bat in Windows, setenv.sh in mac/linux), aggiungi le configurazioni in base ai diversi sistemi; tieni presente che la sintassi sarà leggermente diversa;

// mac或linux
export JAVA_OPTS="-Xms512m -Xmx1024m -XX:+UseG1GC -Duser.timezone=Asia/Shanghai"
  • 1
  • 2
// windows
set JAVA_OPTS=-Xms512m -Xmx1024m -XX:+UseG1GC -Duser.timezone=Asia/Shanghai
  • 1
  • 2

2.1.3 service.bat (Windows)

service, vediamo questo file solo in Windows, di solito viene utilizzato per registrare il servizio Tomcat come servizio di sistema; l'utilizzo principale è accedere alla directory bin ed eseguire service.bat install + nome servizio personalizzato;
Inserisci qui la descrizione dell'immagine
Inserisci qui la descrizione dell'immagine
Quindi possiamo vedere nel servizio Windows che non è avviato in questo momento. Puoi fare clic su per avviare o riavviare il computer. Si avvierà automaticamente al successivo riavvio del computer.

2.2 directory conf

La directory conf memorizza vari file di configurazione globale del server Tomcat.

  • server.xml: file di configurazione principale di Tomcat, incluse le informazioni di configurazione di servizio, connettore, motore, host e altri componenti.
  • web.xml: un file di configurazione che segue lo standard delle specifiche servlet e viene utilizzato per configurare i servlet e fornire informazioni di configurazione predefinite per tutte le applicazioni web.
  • tomcat-users.xml: ruoli correlati, utenti, password e altre informazioni utilizzate nell'autenticazione Realm.
  • context.xml: informazioni sulla configurazione predefinita per tutti gli host.
  • catalina.policy: file di configurazione della politica di sicurezza relativa a Java.
  • catalina.properties: definizione del pacchetto interno Tomcat e file di controllo relativi all'accesso.
  • logging.properties: informazioni di configurazione relative al logger Tomcat.

2.2.1 file server.xml

Nel file di configurazione server.xml di Apache Tomcat, puoi配置多个端口, ma il più comune di questi includeHTTP服务的端口(L'impostazione predefinita è 8080),AJP服务的端口(il valore predefinito è 8009) eSSL/TLS(即HTTPS)的端口(Se abilitato, il valore predefinito potrebbe essere 8443, ma dipende dalla configurazione specifica)
【1】Porta del connettore http

Il connettore HTTP viene utilizzato per gestire le richieste HTTP in arrivo in Tomcat. Per impostazione predefinita, Tomcat è in ascolto sulla porta 8080. Puoi cambiare questa porta modificando l'attributo porta dell'etichetta.

Inserisci qui la descrizione dell'immagine
【2】Porta connettore AJP

Il connettore AJP (Apache JServ Protocol) viene utilizzato per la comunicazione tra Tomcat e il server HTTP Apache, soprattutto quando si utilizza il modulo mod_jk. Per impostazione predefinita, Tomcat è in ascolto sulla porta 8009.

AJP目前我们其实不怎么使用,因为nginx已经可以替代它;它一开始是默认注释的,根据自己需要来开启

【3】Porta connettore SSL/TLS (HTTPS).

Se prevedi che Tomcat gestisca le richieste HTTPS, devi configurare un connettore SSL/TLS.Ciò comporta la specifica di informazioni come il keystore (keystore) e la password del certificato SSL

Inserisci qui la descrizione dell'immagine
这个也是默认注释的,当你需要用到https请求的时候,再去开启;certificateKeystoreFile和certificateKeystorePassword应该指向你的密钥库文件和它的密码。这些值需要根据你的实际密钥库文件和密码进行更改

2.2.2 web.xml (poco modificato)

Nella directory di installazione di Tomcatconf目录mezzoweb.xml文件全局配置文件 , che definisce la mappatura dei tipi MIME e Servlet predefiniti a livello di server Tomcat, ecc. Di solito, questo file web.xml globale non necessita di essere modificato frequentemente dagli sviluppatori, a meno che non sia necessario aggiungere la mappatura servlet globale, il filtro (Filter), il listener (Listener), ecc. all'intero server Tomcat;

一些配置是可以通过注解(Annotations)来完成,这减少了对web.xml文件的依赖;

2.2.3 tomcat-utenti.xml

<tomcat-users xmlns="http://tomcat.apache.org/xml"  
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
              xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"  
              version="1.0">  
  
  <!--  
    注意:默认情况下,Tomcat Manager是禁用的,并且没有设置任何用户。  
    要启用Tomcat Manager,并为其设置用户,你需要取消以下注释,  
    并根据需要修改用户名、密码和角色。  
  -->  
  
  <role rolename="manager-gui"/>  
  <role rolename="manager-script"/>  
  <user username="tomcat" password="tomcat" roles="manager-gui"/>  
  <user username="admin" password="admin123" roles="manager-script"/>  
  
</tomcat-users>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

2.2.4 proprietà di registrazione

Modificando questo file è possibile definire il livello di registro, il formato, la posizione di output, ecc. Ciò è utile per il monitoraggio e il debug dei server Tomcat e delle relative applicazioni distribuite.

# 设置日志的根级别和处理器  
handlers = 1catalina.org.apache.juli.FileHandler, 2localhost.org.apache.juli.FileHandler, 3manager.org.apache.juli.FileHandler, 4host-manager.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler  
  
# 设置根日志级别  
.level = INFO  
  
# 设置特定类别的日志级别  
org.apache.catalina.level = INFO  
org.apache.catalina.startup.level = FINE  
org.apache.catalina.session.level = FINE  
org.apache.catalina.util.lifecycle.level = FINE  
  
# 为不同的处理器(文件处理器和控制台处理器)设置格式和文件路径  
# 文件处理器示例  
1catalina.org.apache.juli.FileHandler.level = FINE  
1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs  
1catalina.org.apache.juli.FileHandler.prefix = catalina.  
  
2localhost.org.apache.juli.FileHandler.level = FINE  
2localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs  
2localhost.org.apache.juli.FileHandler.prefix = localhost.  
  
3manager.org.apache.juli.FileHandler.level = FINE  
3manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs  
3manager.org.apache.juli.FileHandler.prefix = manager.  
  
4host-manager.org.apache.juli.FileHandler.level = FINE  
4host-manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs  
4host-manager.org.apache.juli.FileHandler.prefix = host-manager.  
  
# 控制台处理器  
java.util.logging.ConsoleHandler.level = FINE  
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter  
  
# 设置日志文件的编码  
org.apache.juli.FileHandler.encoding = UTF-8  
  
# Java 类的日志级别  
org.apache.jasper.level = INFO  
org.apache.coyote.level = INFO
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40

Directory lib 2.3 (sostanzialmente invariata)

Funzione: archivia i file della libreria (file JAR) necessari per eseguire Tomcat.
Nota: sebbene alcune vecchie versioni di Tomcat o configurazioni specifiche possano archiviare file JAR in altre directory come common/lib, server/lib o shared/lib, le versioni moderne di Tomcat preferiscono archiviare i file della libreria principale nella directory lib.

2.4 directory dei registri

Funzione: archivia i file di registro quando viene eseguito Tomcat.
Contenuto: incluse varie informazioni di registro durante l'avvio, l'esecuzione e l'arresto di Tomcat, come catalina.out, localhost.log, ecc.

Inserisci qui la descrizione dell'immagine
这里catalina.2024-7-10是通过日志滚动策略生成的,用于记录Catalina容器的日常运行日志;

locahost.2024-7-10,localhost_access_log.2024-7-10分别记录了应用程序的日志信息和访问日志;

host-manager日志是监控和管理Tomcat服务器上虚拟主机的重要工具。通过分析这些日志文件,管理员可以了解虚拟主机的使用情况,以及是否存在潜在的问题或安全风险

Di solito, quando controlliamo i log quotidianamente, non scegliamo Catalina.log/Catalina.out/appName.log, ecc.;

2.5 directory delle app web

Funzione: directory di pubblicazione Web principale di Tomcat, utilizzata per archiviare applicazioni Web.
Contenuto: per impostazione predefinita, l'applicazione può essere pubblicata inserendo i file dell'applicazione Web in questa directory. Tomcat eseguirà automaticamente la scansione delle applicazioni in questa directory e le distribuirà.

Le caratteristiche delle webapp sono:
【1】Distribuzione automatica: Tomcat eseguirà regolarmente la scansione di tutti i contenuti nella directory webapps.quando inserisci a WAR 文件(ad esempio, myapp.war) quando viene inserito nella directory webapps, Tomcat rileverà automaticamente questo file e尝试部署它 .Se il file è un pacchetto WAR, Tomcat decomprimerà prima il file e quindi distribuirà l'applicazione in base alla struttura di directory decompressa.
【2】Gestione: operando direttamente sui file nella directory webapps, puoi gestire facilmente le applicazioni Web su Tomcat.Ad esempio, puoi passare删除目录来卸载应用程序o tramite替换 WAR 文件Venirerinnovareapp.

【3】Percorso di distribuzione personalizzato:Tomcat 默认将 Web 应用程序部署在 webapps 目录下, ma puoi anche modificare il file di configurazione Tomcat (come server.xml ) per specificare un'altra directory come percorso di distribuzione dell'applicazione. Lasciatemelo dire, è raro vedere un altro percorso definito ma non è impossibile;

<Host name="localhost"  appBase="webapps"  
        unpackWARs="true" autoDeploy="true">  
  
    <!-- 配置一个Context来指定其他目录为应用程序的部署路径 -->  
    <Context path="/myapp" docBase="/path/to/your/application" reloadable="true">  
        <!-- 这里可以添加更多的Context配置 -->  
    </Context>  
  
    <!-- 其他Host配置 -->  
  
</Host>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

2.6 cartella di lavoro

Funzione: memorizza i file di classe generati dopo la compilazione JSP e i file temporanei di Servlet.
Nota: cancellare il contenuto di questa directory e riavviare Tomcat per cancellare la cache compilata di JSP e Servlet.

简单的来说,work的作用就是JSP编译和缓存来提高tomcat的性能,主要体现在响应速度上;
注意需要定期清理该目录,长期tomcat的运行和更新会导致该目录越来愈大;占用大量的磁盘空间;

2.7 directory temporanea

Funzione: archivia i file temporanei generati durante l'esecuzione di Tomcat.
Nota: questi file temporanei vengono solitamente utilizzati per supportare le operazioni interne di Tomcat, come la gestione delle sessioni, il caricamento di file, ecc.

这个目录有点类似于work目录,也是通过缓存临时文件来提高应用程序的性能

3. Infine

[1] Dopo aver effettuato le configurazioni pertinenti, spesso è necessario riavviare Tomcat affinché abbiano effetto;

[2] Sebbene le directory temp e di lavoro siano file di cache e file temporanei, è comunque necessario eseguire un backup quando vengono cancellate e verificare se questi file sono ancora occupati da altri processi dell'applicazione;

[3] Quando viene eseguito lo spegnimento, non si ferma immediatamente, ma tenta di chiudere regolarmente Tomcat. L'arresto di questo processo potrebbe richiedere del tempo, a seconda della situazione è possibile giudicare se Tomcat è stato spento controllando lo stato della porta Tomcat ;