Обмен технологиями

[Подробное объяснение каталога Tomcat] Что еще нужно знать о Tomcat

2024-07-12

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

Надеюсь, статья сможет подарить вам вдохновение и вдохновение~
Если вы считаете, что статья вам полезна,Нравится+Подписаться+Собрать Пожалуйста, поддержите блогера~

Вступительные примечания

Tomcat по-прежнему активно участвует в повседневной жизни разработчиков, но есть ли у нас более глубокое понимание этого или достаточно просто знать, как его установить, настроить и запустить? Эта статья служит моим резюме и записью. Надеюсь, здесь есть что-то, что вам нужно;

Вставьте сюда описание изображения

1. Базовое описание среды

Учитывая факторы окружающей среды, каждый должен правильно сравнивать и анализировать свою собственную программную и аппаратную среду. Пожалуйста, внимательно прочитайте аппаратную и программную среду.

1.1 Аппаратная среда

Windows 11 专业版

1.2 Программная среда

Инструменты разработки:Tomcat 9.0

2. Файловая структура Tomcat

Структура каталогов файлов в основном разделена на: bin, conf, lib, logs, temp, webapps, work. Структура каталогов файлов в Tomcat относительно понятна, и каждый каталог имеет свою собственную.特定的功能и用途

Вставьте сюда описание изображения

2.1 каталог бин

В каталоге bin хранятся файлы сценариев запуска и завершения работы Tomcat. Вот несколько файлов;重要的文件Мы должны знать;

  • Файлы, заканчивающиеся на .sh: сценарии запуска и завершения работы на платформах Linux или Mac.
  • Файлы, заканчивающиеся на .bat: сценарии запуска и завершения работы на платформах Windows.
  • catalina.sh: основной сценарий запуска Tomcat, в котором можно установить параметры JVM.
  • Startup.sh и Shutdown.sh: используются для запуска и завершения работы сервера Tomcat соответственно.
  • service.bat: используется для регистрации службы Tomcat в Windows.

2.1.1 запуск и выключение

дляstartupиshutdown Вы, должно быть, хорошо с ним знакомы. Мы должны использовать его каждый день, чтобы быстро запускать и выключать сервер Tomcat. Что касается суффикса bat, это зависит от типа вашей операционной системы.

2.1.2 Каталина

оCatalinaФайл также из Tomcat启动脚本startupОсновное отличие состоит в том, что последний专注启动, а первый еще может пройти配置参数для достижения других целей;

Например, здесь я использую Catalina для запуска Tomcat, я сделаю это: введитеcatalina.bat start (система Windows)
Вставьте сюда описание изображения
вотtomcat的bin目录Выполняется, если вы настроили环境变量, то вы можете выполнить эту операцию в любом месте, аналогично мы также можем использовать;catalina.bat stopостановить службу;

Итак, как настроить параметры?

Обычный подход заключается в настройке соответствующих параметров путем изменения файла Catalina, а наиболее распространенной конфигурацией параметров, которую мы используем, является JVM и другой связанный контент, например, в файле Catalina, здесь я;-Xms512mуже настроенJVM的初始堆内存составляет 512 МБ,-Xmx1024mуже настроен最大堆内存составляет 1024 МБ,-XX:+UseG1GCВключеноG1垃圾回收器-Duser.timezone=Asia/Shanghaiуже настроенJVM的时区

Вставьте сюда описание изображения
После внесения изменений перезапустите Tomcat, чтобы конфигурация вступила в силу. Вот сравнение различий до и после настройки;
Вставьте сюда описание изображения
Вставьте сюда описание изображения
Программа запускается нормально, и мы можем видеть информацию о параметрах, которые мы настроили на консоли;

需要注意的是, в реальных ситуациях мы не不建议直接在catalina中修改, что не способствует обновлению и обслуживанию нашего сервиса tomcat, поэтому мы рекомендуем通过setenv配置文件 Для настройки параметров зачем setenv? Давайте посмотрим на файл конфигурации Catalina. В этом абзаце говорится, что сценарий вынесет решение при запуске. Если этот файл существует, он будет автоматически вызван. Этот файл обычно не существует в текущем каталоге Tomcat, и нам это нужно. чтобы вручную создать его самостоятельно.
Вставьте сюда описание изображения
После создания setenv (setenv.bat в Windows, setenv.sh в mac/linux), затем добавьте в него конфигурации для разных систем, обратите внимание, что синтаксис будет немного отличаться;

// 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)

файл службы, мы видим этот файл только в Windows, он обычно используется для регистрации службы Tomcat в качестве системной службы; основное использование — войти в каталог bin и выполнить установку service.bat + имя пользовательской службы;
Вставьте сюда описание изображения
Вставьте сюда описание изображения
Затем мы видим в службе Windows, что она в данный момент не запущена. Можно нажать кнопку запуска или перезагрузки компьютера. Она запустится автоматически при следующей перезагрузке компьютера;

2.2 каталог конф

В каталоге conf хранятся различные файлы глобальной конфигурации сервера Tomcat.

  • server.xml: основной файл конфигурации Tomcat, включая информацию о конфигурации службы, соединителя, ядра, хоста и других компонентов.
  • web.xml: файл конфигурации, соответствующий стандарту спецификации сервлетов и используемый для настройки сервлетов и предоставления информации о конфигурации по умолчанию для всех веб-приложений.
  • tomcat-users.xml: связанные роли, пользователи, пароли и другая информация, используемая при аутентификации Realm.
  • context.xml: информация о конфигурации по умолчанию для всех хостов.
  • catalina.policy: файл конфигурации политики безопасности, связанной с Java.
  • catalina.properties: определение внутреннего пакета Tomcat и файлы управления доступом.
  • logging.properties: информация о конфигурации, связанная с регистратором Tomcat.

2.2.1 сервер.xml

В файле конфигурации server.xml Apache Tomcat вы можете配置多个端口, но наиболее распространенными из них являютсяHTTP服务的端口(по умолчанию 8080),AJP服务的端口(по умолчанию 8009) иSSL/TLS(即HTTPS)的端口(Если включено, значением по умолчанию может быть 8443, но это зависит от конкретной конфигурации)
【1】порт HTTP-разъема

HTTP-коннектор используется для обработки HTTP-запросов, поступающих в Tomcat. По умолчанию Tomcat прослушивает порт 8080. Вы можете изменить этот порт, изменив атрибут порта метки.

Вставьте сюда описание изображения
【2】Порт разъема AJP

Коннектор AJP (протокол Apache JServ) используется для связи между Tomcat и HTTP-сервером Apache, особенно при использовании модуля mod_jk. По умолчанию Tomcat прослушивает порт 8009.

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

【3】Разъемный порт SSL/TLS (HTTPS)

Если вы планируете, чтобы Tomcat обрабатывал HTTPS-запросы, вам необходимо настроить соединитель SSL/TLS.Это предполагает указание такой информации, как хранилище ключей (хранилище ключей) и пароль SSL-сертификата.

Вставьте сюда описание изображения
这个也是默认注释的,当你需要用到https请求的时候,再去开启;certificateKeystoreFile和certificateKeystorePassword应该指向你的密钥库文件和它的密码。这些值需要根据你的实际密钥库文件和密码进行更改

2.2.2 web.xml (немного изменено)

В каталоге установки Tomcatconf目录серединаweb.xml文件да全局配置文件 , который определяет сопоставление типов сервлетов и MIME по умолчанию для всего сервера Tomcat и т. д. Обычно этот глобальный файл web.xml не требует частого изменения разработчиками, если только вам не нужно добавить глобальное сопоставление сервлетов, фильтр (Filter), прослушиватель (Listener) и т. д. на весь сервер Tomcat;

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

2.2.3 tomcat-пользователи.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 свойства ведения журнала

Редактируя этот файл, вы можете определить уровень журнала, формат, место вывода и т. д. Это полезно для мониторинга и отладки серверов Tomcat и развернутых на них приложений.

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

Каталог lib 2.3 (практически без изменений)

Функция: Сохранение файлов библиотеки (файлов JAR), необходимых для запуска Tomcat.
Примечание. Хотя некоторые старые версии Tomcat или определенные конфигурации могут хранить файлы JAR в других каталогах, таких как common/lib, server/lib илиshared/lib, современные версии Tomcat предпочитают хранить файлы основной библиотеки в каталоге lib.

2.4 каталог журналов

Функция: Сохраняйте файлы журналов при запуске Tomcat.
Содержимое: включая различную информацию журнала во время запуска Tomcat, процессов запуска и завершения работы, таких как catalina.out, localhost.log и т. д.

Вставьте сюда описание изображения
这里catalina.2024-7-10是通过日志滚动策略生成的,用于记录Catalina容器的日常运行日志;

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

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

Обычно, когда мы ежедневно проверяем журналы, мы не выбираем Catalina.log/Catalina.out/appName.log и т. д.;

2.5 каталог веб-приложений

Функция: основной каталог веб-публикаций Tomcat, используемый для хранения веб-приложений.
Содержимое: по умолчанию приложение можно опубликовать, поместив файлы веб-приложения в этот каталог. Tomcat автоматически просканирует приложения в этом каталоге и развернет их.

Характеристики веб-приложений:
【1】Автоматическое развертывание: Tomcat будет регулярно сканировать все содержимое каталога веб-приложений.когда вы размещаете WAR 文件(например, myapp.war) при размещении в каталоге веб-приложений Tomcat автоматически обнаружит этот файл и尝试部署它 .Если файл представляет собой пакет WAR, Tomcat сначала распакует файл, а затем развернет приложение в соответствии с распакованной структурой каталогов.
【2】Управление: напрямую управляя файлами в каталоге веб-приложений, вы можете легко управлять веб-приложениями на Tomcat.Например, вы можете пройти删除目录来卸载应用程序или через替换 WAR 文件Приходитьвозобновлятьприложение.

【3】Индивидуальный путь развертывания:Tomcat 默认将 Web 应用程序部署在 webapps 目录下, но вы также можете изменить файл конфигурации Tomcat (например, server.xml ), чтобы указать другой каталог в качестве пути развертывания приложения. Позвольте мне упомянуть об этом: редко можно увидеть другой путь, но это не невозможно;

<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 рабочий каталог

Функция: Храните файлы классов, созданные после компиляции JSP, и временные файлы сервлета.
Примечание. Очистите содержимое этого каталога и перезапустите Tomcat, чтобы очистить скомпилированный кэш JSP и сервлета.

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

2.7 временный каталог

Функция: хранить временные файлы, созданные во время работы Tomcat.
Примечание. Эти временные файлы обычно используются для поддержки внутренних операций Tomcat, таких как управление сеансами, загрузка файлов и т. д.

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

3. Наконец

[1] После внесения соответствующих настроек вам часто необходимо перезапустить Tomcat, чтобы изменения вступили в силу;

[2] Хотя временные и рабочие каталоги являются файлами кэша и временными файлами, вам все равно необходимо сделать резервную копию при их очистке и убедиться, что эти файлы все еще заняты другими процессами приложения;

[3] При выполнении выключения он не останавливается немедленно, а пытается корректно завершить работу Tomcat. Этот процесс может занять некоторое время, в зависимости от ситуации. Вы можете определить, был ли Tomcat выключен, проверив состояние порта Tomcat; ;