Compartilhamento de tecnologia

[Explicação detalhada do diretório Tomcat] O que mais você precisa saber sobre o Tomcat

2024-07-12

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

Espero que o artigo possa lhe dar inspiração e inspiração ~
Se você acha que o artigo é útil para você,Curtir + Seguir + Coletar Por favor, apoie o blogueiro ~

Notas de abertura

O Tomcat ainda está presente no dia a dia dos desenvolvedores, mas será que temos um conhecimento mais profundo sobre ele ou basta apenas saber como instalá-lo, configurá-lo e iniciá-lo? Este artigo serve como meu resumo e registro. Espero que haja algo que você precise;

Insira a descrição da imagem aqui

1. Descrição básica do ambiente

Considerando os fatores ambientais, todos devem comparar e analisar adequadamente seu próprio ambiente de software e hardware ~ Por favor, leia o ambiente de hardware e software com atenção.

1.1 Ambiente de hardware

Windows 11 专业版

1.2 Ambiente de software

ferramentas de desenvolvimento:Tomcat 9.0

2. Estrutura do arquivo Tomcat

A estrutura de diretórios de arquivos é dividida principalmente em: bin, conf, lib, logs, temp, webapps, work. A estrutura de diretórios de arquivos no Tomcat é relativamente clara e cada diretório tem sua própria.特定的功能e用途

Insira a descrição da imagem aqui

Diretório 2.1 bin

O diretório bin armazena arquivos de script de inicialização e desligamento do Tomcat.重要的文件Devemos saber;

  • Arquivos terminados em .sh: scripts de inicialização e desligamento em plataformas Linux ou Mac.
  • Arquivos terminados em .bat: scripts de inicialização e desligamento em plataformas Windows.
  • catalina.sh: script de inicialização principal do Tomcat, onde os parâmetros JVM podem ser definidos.
  • startup.sh e shutdown.sh: usados ​​para iniciar e desligar o servidor Tomcat respectivamente.
  • service.bat: usado para registrar o serviço Tomcat no Windows.

2.1.1 inicialização e desligamento

parastartupeshutdown Você deve estar muito familiarizado com ele. Devemos usá-lo todos os dias para iniciar e desligar rapidamente o servidor Tomcat. Quanto ao sufixo bat, depende do tipo de sistema operacional.

2.1.2 Catalina

sobreCatalinaO arquivo também é do Tomcat启动脚本,estartupA principal diferença é que este último专注启动, enquanto o primeiro ainda pode passar配置参数para atingir outros fins;

Por exemplo, aqui eu uso catalina para iniciar o Tomcat, farei assim: entercatalina.bat start (sistema Windows)
Insira a descrição da imagem aqui
aqui estátomcat的bin目录Executado em, se você configurou环境变量, então você pode realizar esta operação em qualquer local da mesma forma, também podemos usar;catalina.bat stopinterromper o serviço;

Então, como configurar parâmetros?

A abordagem usual é configurar os parâmetros relevantes modificando o arquivo catalina, e a configuração de parâmetros mais comum que usamos é JVM e outros conteúdos relacionados, por exemplo, no arquivo catalina, aqui estou;-Xms512mjá configuradoJVM的初始堆内存é 512 MB,-Xmx1024mjá configurado最大堆内存é 1024 MB,-XX:+UseG1GCHabilitadoG1垃圾回收器-Duser.timezone=Asia/Shanghaijá configuradoJVM的时区

Insira a descrição da imagem aqui
Após a modificação, reinicie o Tomcat para que a configuração tenha efeito. Aqui está uma comparação da diferença antes e depois da configuração;
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui
O programa inicia normalmente e podemos ver as informações dos parâmetros que configuramos no console;

需要注意的是, em situações reais não不建议直接在catalina中修改, o que não é amigável para a atualização e manutenção do nosso serviço Tomcat, por isso recomendamos通过setenv配置文件 Para configurar parâmetros; por que setenv? Vamos dar uma olhada no arquivo de configuração de Catalina. Este parágrafo nos diz que o script fará um julgamento quando for iniciado. Se esse arquivo existir, ele será chamado automaticamente. para criarmos um manualmente.
Insira a descrição da imagem aqui
Depois de criar o setenv (setenv.bat no Windows, setenv.sh no mac/linux), adicione configurações nele de acordo com os diferentes sistemas;

// 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 serviço.bat(Windows)

arquivo de serviço, só vemos esse arquivo no Windows, geralmente é usado para registrar o serviço Tomcat como um serviço do sistema; o uso principal é entrar no diretório bin e executar service.bat install + nome do serviço personalizado;
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui
Então podemos ver no serviço do Windows que ele não foi iniciado neste momento. Você pode clicar para iniciar ou reiniciar o computador. Ele será iniciado automaticamente na próxima reinicialização do computador.

2.2 diretório conf

O diretório conf armazena vários arquivos de configuração global do servidor Tomcat.

  • server.xml: arquivo de configuração principal do Tomcat, incluindo informações de configuração de Serviço, Conector, Motor, Host e outros componentes.
  • web.xml: um arquivo de configuração que segue o padrão de especificação de Servlet e é usado para configurar servlets e fornecer informações de configuração padrão para todos os aplicativos da web.
  • tomcat-users.xml: funções relacionadas, usuários, senhas e outras informações usadas na autenticação do Realm.
  • context.xml: informações de configuração padrão para todos os hosts.
  • catalina.policy: arquivo de configuração de política de segurança relacionada a Java.
  • catalina.properties: definição de pacote interno do Tomcat e arquivos de controle relacionados ao acesso.
  • logging.properties: informações de configuração relacionadas ao criador de logs do Tomcat.

2.2.1 servidor.xml

No arquivo de configuração server.xml do Apache Tomcat, você pode配置多个端口, mas os mais comuns incluemHTTP服务的端口(O padrão é 8080),AJP服务的端口(o padrão é 8009) eSSL/TLS(即HTTPS)的端口(Se ativado, o padrão pode ser 8443, mas isso depende da configuração específica)
【1】Porta do conector http

O conector HTTP é usado para lidar com solicitações HTTP que chegam ao Tomcat. Por padrão, o Tomcat escuta na porta 8080. Você pode alterar esta porta modificando o atributo de porta do rótulo.

Insira a descrição da imagem aqui
【2】Porta do conector AJP

O conector AJP (Apache JServ Protocol) é usado para comunicação entre o Tomcat e o servidor Apache HTTP, especialmente ao usar o módulo mod_jk. Por padrão, o Tomcat escuta na porta 8009.

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

【3】Porta do conector SSL/TLS (HTTPS)

Se você planeja que o Tomcat lide com solicitações HTTPS, será necessário configurar um conector SSL/TLS.Isso envolve especificar informações como o keystore (keystore) e a senha do certificado SSL

Insira a descrição da imagem aqui
这个也是默认注释的,当你需要用到https请求的时候,再去开启;certificateKeystoreFile和certificateKeystorePassword应该指向你的密钥库文件和它的密码。这些值需要根据你的实际密钥库文件和密码进行更改

2.2.2 web.xml (pouco alterado)

No diretório de instalação do Tomcatconf目录meioweb.xml文件sim全局配置文件 , que define o servlet padrão em todo o servidor Tomcat e o mapeamento de tipo MIME, etc. Normalmente, este arquivo web.xml global não precisa ser modificado frequentemente pelos desenvolvedores, a menos que você precise adicionar mapeamento de Servlet global, filtro (Filtro), ouvinte (Listener), etc. a todo o servidor Tomcat;

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

2.2.3 tomcat-users.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 propriedades de registro

Ao editar este arquivo, você pode definir o nível de log, formato, local de saída, etc. Isso é útil para monitorar e depurar servidores Tomcat e seus aplicativos implementados.

# 设置日志的根级别和处理器  
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

Diretório lib 2.3 (basicamente inalterado)

Função: Armazene os arquivos de biblioteca (arquivos JAR) necessários para executar o Tomcat.
Nota: Embora algumas versões antigas do Tomcat ou configurações específicas possam armazenar arquivos JAR em outros diretórios, como common/lib, server/lib ou shared/lib, as versões modernas do Tomcat preferem armazenar arquivos da biblioteca principal no diretório lib.

2.4 diretório de registros

Função: Armazena os arquivos de log quando o Tomcat é executado.
Conteúdo: incluindo várias informações de log durante os processos de inicialização, execução e desligamento do Tomcat, como catalina.out, localhost.log, etc.

Insira a descrição da imagem aqui
这里catalina.2024-7-10是通过日志滚动策略生成的,用于记录Catalina容器的日常运行日志;

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

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

Normalmente, quando verificamos os logs diariamente, não escolhemos Catalina.log/Catalina.out/appName.log, etc.;

2.5 diretório de aplicativos da web

Função: principal diretório de publicação na Web do Tomcat, usado para armazenar aplicativos da Web.
Conteúdo: Por padrão, o aplicativo pode ser publicado colocando os arquivos do aplicativo web neste diretório. O Tomcat verificará automaticamente os aplicativos neste diretório e os implantará.

As características dos aplicativos da web são:
【1】 Implantação automática: o Tomcat verificará regularmente todo o conteúdo do diretório webapps.quando você coloca um WAR 文件(por exemplo, myapp.war) quando colocado no diretório webapps, o Tomcat detectará automaticamente este arquivo e尝试部署它 .Se o arquivo for um pacote WAR, o Tomcat primeiro descompactará o arquivo e depois implantará o aplicativo de acordo com a estrutura de diretórios descompactada.
【2】Gerenciamento: Ao operar diretamente os arquivos no diretório webapps, você pode gerenciar facilmente aplicativos da Web no Tomcat.Por exemplo, você pode passar删除目录来卸载应用程序, ou através替换 WAR 文件Virrenovaraplicativo.

【3】Caminho de implantação personalizado:Tomcat 默认将 Web 应用程序部署在 webapps 目录下, mas você também pode modificar o arquivo de configuração do Tomcat (como server.xml ) para especificar outro diretório como caminho de implantação do aplicativo. Deixe-me mencionar isto, é raro ver outro caminho definido, mas não é impossível;

<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 diretório de trabalho

Função: Armazenar os arquivos de classe gerados após a compilação JSP e os arquivos temporários do Servlet.
Nota: Limpe o conteúdo deste diretório e reinicie o Tomcat para limpar o cache compilado de JSP e Servlet.

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

Diretório temporário 2.7

Função: Armazenar arquivos temporários gerados durante a execução do Tomcat.
Nota: Esses arquivos temporários geralmente são usados ​​para suportar operações internas do Tomcat, como gerenciamento de sessões, upload de arquivos, etc.

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

3. Finalmente

[1] Depois de fazer as configurações relevantes, muitas vezes você precisa reiniciar o Tomcat para que tenha efeito;

[2] Embora os diretórios temporário e de trabalho sejam arquivos de cache e temporários, você ainda precisa fazer um backup ao limpá-los e confirmar se esses arquivos ainda estão ocupados por outros processos do aplicativo;

[3] Quando o desligamento é executado, ele não para imediatamente, mas tenta desligar o Tomcat normalmente. Este processo pode demorar um pouco para parar dependendo da situação; ;