Compartir tecnología

[Explicación detallada del directorio de Tomcat] ¿Qué más necesita saber sobre Tomcat?

2024-07-12

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

Espero que el artículo pueda darte inspiración e inspiración ~
Si cree que el artículo le resulta útil,Me gusta+Seguir+Recoger Por favor apoye al blogger ~

Notas de apertura

Tomcat sigue activo en la vida diaria de los desarrolladores, pero ¿tenemos un conocimiento más profundo de él o basta con saber cómo instalarlo, configurarlo e iniciarlo? Este artículo me sirve como resumen y registro. Espero que haya algo que necesites;

Insertar descripción de la imagen aquí

1. Descripción básica del entorno

Teniendo en cuenta los factores ambientales, todos deben comparar y analizar adecuadamente su propio entorno de software y hardware. Lea atentamente el entorno de hardware y software.

1.1 Entorno de hardware

Windows 11 专业版

1.2 Entorno de software

herramientas de desarrollo:Tomcat 9.0

2. Estructura de archivos Tomcat

La estructura del directorio de archivos se divide principalmente en: bin, conf, lib, logs, temp, webapps, work. La estructura del directorio de archivos en Tomcat es relativamente clara y cada directorio tiene el suyo.特定的功能y用途

Insertar descripción de la imagen aquí

2.1 directorio bin

El directorio bin almacena los archivos de script de inicio y apagado de Tomcat. Aquí hay varios;重要的文件Debemos saberlo;

  • Archivos que terminan en .sh: scripts de inicio y apagado en plataformas Linux o Mac.
  • Archivos que terminan en .bat: scripts de inicio y apagado en plataformas Windows.
  • catalina.sh: script de inicio principal de Tomcat, donde se pueden configurar los parámetros de JVM.
  • startup.sh y Shutdown.sh: se utilizan para iniciar y cerrar el servidor Tomcat respectivamente.
  • service.bat: utilizado para registrar el servicio Tomcat en Windows.

2.1.1 inicio y apagado

parastartupyshutdown Debe estar muy familiarizado con él. Debemos usarlo todos los días para iniciar y cerrar rápidamente el servidor Tomcat. En cuanto al sufijo bat, depende del tipo de sistema operativo.

2.1.2 Catalina

acerca deCatalinaEl archivo también es de Tomcat.启动脚本,ystartupLa principal diferencia es que este último专注启动, mientras que el primero todavía puede pasar配置参数para lograr otros fines;

Por ejemplo, aquí uso catalina para iniciar Tomcat, haré esto: entercatalina.bat start (sistema de ventanas)
Insertar descripción de la imagen aquí
aquí estátomcat的bin目录Ejecutado bajo, si lo ha configurado环境变量, entonces puedes realizar esta operación en cualquier ubicación de manera similar, también podemos usar;catalina.bat stopdetener el servicio;

Entonces, ¿cómo configurar los parámetros?

El método habitual es configurar los parámetros relevantes modificando el archivo catalina, y la configuración de parámetros más común que usamos es JVM y otro contenido relacionado, por ejemplo, en el archivo catalina, aquí;-Xms512mya configuradoJVM的初始堆内存es 512 MB,-Xmx1024mya configurado最大堆内存es 1024 MB,-XX:+UseG1GCActivadoG1垃圾回收器-Duser.timezone=Asia/Shanghaiya configuradoJVM的时区

Insertar descripción de la imagen aquí
Después de la modificación, reinicie Tomcat para que la configuración surta efecto. Aquí hay una comparación de la diferencia antes y después de la configuración;
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
El programa se inicia normalmente y podemos ver la información de los parámetros que configuramos en la consola;

需要注意的是, en situaciones reales no不建议直接在catalina中修改, lo cual no es amigable para la actualización y mantenimiento de nuestro servicio Tomcat, por lo que recomendamos通过setenv配置文件 Para configurar parámetros; ¿por qué setenv? Echemos un vistazo al archivo de configuración de Catalina. Este párrafo nos dice que el script juzgará cuando se inicie. Si este archivo existe, lo llamaremos automáticamente. Este archivo generalmente no existe en el directorio Tomcat actual. para crear uno manualmente nosotros mismos.
Insertar descripción de la imagen aquí
Después de crear setenv (setenv.bat en Windows, setenv.sh en mac/linux), agregue configuraciones de acuerdo con los diferentes sistemas. Tenga en cuenta que la sintaxis será ligeramente diferente;

// 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 servicio.bat (Windows)

archivo de servicio, solo vemos este archivo en Windows, generalmente se usa para registrar el servicio Tomcat como un servicio del sistema, el uso principal es ingresar al directorio bin y ejecutar service.bat install + nombre de servicio personalizado;
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
Luego podemos ver en el servicio de Windows que no se inicia en este momento. Puede hacer clic para iniciar o reiniciar la computadora. Se iniciará automáticamente con el próximo reinicio de la computadora;

2.2 directorio de configuración

El directorio conf almacena varios archivos de configuración global del servidor Tomcat.

  • server.xml: archivo de configuración principal de Tomcat, que incluye información de configuración del servicio, conector, motor, host y otros componentes.
  • web.xml: un archivo de configuración que sigue el estándar de especificación de servlets y se utiliza para configurar servlets y proporcionar información de configuración predeterminada para todas las aplicaciones web.
  • tomcat-users.xml: roles relacionados, usuarios, contraseñas y otra información utilizada en la autenticación de Realm.
  • context.xml: información de configuración predeterminada para todos los hosts.
  • catalina.policy: archivo de configuración de políticas de seguridad relacionadas con Java.
  • catalina.properties: definición del paquete interno de Tomcat y archivos de control relacionados con el acceso.
  • logging.properties: información de configuración relacionada con el registrador Tomcat.

2.2.1 servidor.xml

En el archivo de configuración server.xml de Apache Tomcat, puede配置多个端口, pero los más comunes incluyenHTTP服务的端口(El valor predeterminado es 8080),AJP服务的端口(el valor predeterminado es 8009), ySSL/TLS(即HTTPS)的端口(Si está habilitado, el valor predeterminado puede ser 8443, pero depende de la configuración específica)
【1】puerto del conector http

El conector HTTP se utiliza para manejar las solicitudes HTTP que llegan a Tomcat. De forma predeterminada, Tomcat escucha en el puerto 8080. Puede cambiar este puerto modificando el atributo de puerto de la etiqueta.

Insertar descripción de la imagen aquí
【2】Puerto del conector AJP

El conector AJP (Protocolo Apache JServ) se utiliza para la comunicación entre Tomcat y el servidor HTTP Apache, especialmente cuando se utiliza el módulo mod_jk. De forma predeterminada, Tomcat escucha en el puerto 8009.

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

【3】Puerto conector SSL/TLS (HTTPS)

Si planea que Tomcat maneje las solicitudes HTTPS, debe configurar un conector SSL/TLS.Esto implica especificar información como el almacén de claves (keystore) y la contraseña del certificado SSL.

Insertar descripción de la imagen aquí
这个也是默认注释的,当你需要用到https请求的时候,再去开启;certificateKeystoreFile和certificateKeystorePassword应该指向你的密钥库文件和它的密码。这些值需要根据你的实际密钥库文件和密码进行更改

2.2.2 web.xml (poco cambiado)

En el directorio de instalación de Tomcatconf目录medioweb.xml文件全局配置文件 , que define el servlet predeterminado en todo el servidor Tomcat y la asignación de tipos MIME, etc. Por lo general, los desarrolladores no necesitan modificar con frecuencia este archivo web.xml global, a menos que necesite agregar mapeo de servlet global, filtro (Filtro), oyente (Listener), etc. a todo el 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 registro.propiedades

Al editar este archivo, puede definir el nivel de registro, el formato, la ubicación de salida, etc. Esto es útil para monitorear y depurar servidores Tomcat y sus aplicaciones implementadas.

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

2.3 directorio lib (básicamente sin cambios)

Función: almacenar los archivos de biblioteca (archivos JAR) necesarios para ejecutar Tomcat.
Nota: Aunque algunas versiones antiguas de Tomcat o configuraciones específicas pueden almacenar archivos JAR en otros directorios como common/lib, server/lib oshared/lib, las versiones modernas de Tomcat prefieren almacenar los archivos de la biblioteca principal en el directorio lib.

2.4 directorio de registros

Función: almacenar los archivos de registro cuando se ejecuta Tomcat.
Contenido: incluye diversa información de registro durante los procesos de inicio, ejecución y apagado de Tomcat, como catalina.out, localhost.log, etc.

Insertar descripción de la imagen aquí
这里catalina.2024-7-10是通过日志滚动策略生成的,用于记录Catalina容器的日常运行日志;

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

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

Por lo general, cuando revisamos los registros diariamente, no elegimos Catalina.log/Catalina.out/appName.log, etc.;

2.5 directorio de aplicaciones web

Función: directorio de publicación web principal de Tomcat, utilizado para almacenar aplicaciones web.
Contenido: de forma predeterminada, la aplicación se puede publicar colocando los archivos de la aplicación web en este directorio. Tomcat escaneará automáticamente las aplicaciones en este directorio y las implementará.

Las características de las aplicaciones web son:
【1】Implementación automática: Tomcat escaneará periódicamente todos los contenidos en el directorio de aplicaciones web.cuando colocas un WAR 文件(por ejemplo, myapp.war) cuando se coloca en el directorio webapps, Tomcat detectará automáticamente este archivo y尝试部署它 .Si el archivo es un paquete WAR, Tomcat primero descomprimirá el archivo y luego implementará la aplicación de acuerdo con la estructura del directorio descomprimido.
【2】Administración: al operar directamente los archivos en el directorio de aplicaciones web, puede administrar fácilmente aplicaciones web en Tomcat.Por ejemplo, puedes pasar删除目录来卸载应用程序, o vía替换 WAR 文件Venirrenovaraplicación.

【3】Ruta de implementación personalizada:Tomcat 默认将 Web 应用程序部署在 webapps 目录下, pero también puede modificar el archivo de configuración de Tomcat (como server.xml ) para especificar otro directorio como ruta de implementación de la aplicación. Permítanme mencionar esto, es raro ver definido otro camino pero no es imposible;

<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 directorio de trabajo

Función: almacenar los archivos de clase generados después de la compilación JSP y los archivos temporales de Servlet.
Nota: borre el contenido de este directorio y reinicie Tomcat para borrar el caché compilado de JSP y Servlet.

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

2.7 directorio temporal

Función: Almacenar archivos temporales generados durante la ejecución de Tomcat.
Nota: Estos archivos temporales se utilizan generalmente para admitir operaciones internas de Tomcat, como administración de sesiones, carga de archivos, etc.

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

3. Finalmente

[1] Después de realizar configuraciones relevantes, a menudo es necesario reiniciar Tomcat para que surta efecto;

[2] Aunque los directorios temporal y de trabajo son archivos de caché y archivos temporales, aún necesita hacer una copia de seguridad al borrarlos y confirmar si estos archivos todavía están ocupados por otros procesos de la aplicación;

[3] Cuando se ejecuta el apagado, no se detiene inmediatamente, sino que intenta cerrar Tomcat correctamente. Este proceso puede tardar un poco en detenerse dependiendo de la situación. Puede juzgar si Tomcat se ha cerrado comprobando el estado del puerto de Tomcat; ;