Перейти к содержанию

Tomcat

Установка Tomcat#

Документация

  • wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.96/bin/apache-tomcat-9.0.96.tar.gz
  • CATALINA_HOME - представляет собой корень вашей установки Tomcat, например /home/tomcat/apache-tomcat-9.0.10 или C:\Program Files\apache-tomcat-9.0.10.
  • CATALINA_BASE - представляет корень конфигурации времени выполнения определенного экземпляра Tomcat. Если вы хотите иметь несколько экземпляров Tomcat на одной машине, используйте свойство CATALINA_BASE.

  • cd /opt/

  • wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.73/bin/apache-tomcat-9.0.73.tar.gz
  • useradd -r -m -U -d /opt/tomcat tomcat
  • chown -R tomcat:tomcat /opt/tomcat
  • which java
  • readlink -f /usr/bin/java
  • cd /opt/tomcat/bin
  • ./startup.sh

  • Создаём systemd unit

  • vi /etc/systemd/system/tomcat.service
    [Unit]
    Description=Apache Tomcat Web Application Container
    After=network.target
    
    [Service]
    Type=forking
    
    Environment=CATALINA_HOME=/opt/tomcat/
    Environment=CATALINA_BASE=/opt/tomcat/
    Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid
    Environment=JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
    
    ExecStart=/opt/tomcat/bin/startup.sh
    ExecStop=/opt/tomcat/bin/shutdown.sh
    
    User=tomcat
    Group=tomcat
    RestartSec=10
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
    
  • systemctl daemon-reload
  • systemctl start tomcat
  • systemctl enable tomcat
  • systemctl status tomcat
/opt/tomcat
├── conf
   ├── server.xml          # Основной файл конфигурации серверов и виртуальных хостов
   ├── logging.properties  # Общие настройки логирования
   ├── [host1]             # Каталог для настроек виртуального хоста host1 (опционально)
      └── app1.xml        # Конфигурация приложения для host1/app1
   └── [host2]             # Каталог для настроек виртуального хоста host2 (опционально)
       └── app2.xml        # Конфигурация приложения для host2/app2
├── logs                    # Общая директория для логов (или отдельные каталоги для каждого хоста)
   ├── host1               # Логи виртуального хоста host1 (если настроено)
   ├── host2               # Логи виртуального хоста host2 (если настроено)
   └── catalina.out        # Основной лог Tomcat
├── webapps                 # Общая папка для приложений (используется по умолчанию для всех виртуальных хостов)
   ├── ROOT                # Основное приложение по умолчанию
   ├── examples            # Пример приложения
   └── [host-specific-apps]
       ├── host1/app1      # Приложение app1 для host1
       └── host2/app2      # Приложение app2 для host2
└── temp
└── work
└── bin
└── lib

Содержимое CATALINA_HOME в /opt/tomcat:

  • /bin — скрипты для запуска и остановки Tomcat (startup.sh, catalina.sh)
  • /lib — библиотеки, необходимые для работы сервера (catalina.jar, jasper.jar)

CATALINA_BASE — директория с конфигурациями, временными файлами и приложениями, которые специфичны для каждого экземпляра Tomcat. Для нескольких инстансов рекомендуется создать отдельный CATALINA_BASE для каждого инстанса, например:

/etc/tomcat-instance1, /etc/tomcat-instance2 и т.д.

  • /conf — конфигурационные файлы для инстанса (server.xml, web.xml, context.xml).
  • /webapps — развернутые приложения и .war файлы для данного инстанса.
  • /logs — папка с логами инстанса.
  • /temp — временные файлы инстанса.
  • /work — кешированные объекты и скомпилированные JSP для данного инстанса.

Про библиотеку Logback для логирования Java приложений#

В logback.xml основные блоки конфигурации включают:

  • <configuration> — корневой блок файла, внутри которого настраиваются все остальные элементы.

  • <appender> — определяет, куда будут направляться логи (например, в файл, консоль, удалённый сервер):

    • ConsoleAppender — вывод в консоль (обычно используется для отладки).
    • FileAppender — запись логов в файл.
    • RollingFileAppender — запись в файл с ротацией по размеру или дате.
    • SocketAppender — отправка логов на удалённый сервер.
  • <encoder> — внутри аппендера определяет форматирование логов (например, шаблоны с датой, уровнем лога и сообщением).

  • <root> — задаёт общий уровень логгирования (например, INFO, DEBUG) и связывает его с аппендерами.
  • <logger> — настраивает уровень логгирования для отдельных классов или пакетов приложения (переопределяет <root>).

  • TRACE: Самый детализированный уровень, для отладки.

  • DEBUG: Для отладки, но с меньшей детализацией, чем TRACE.
  • INFO: Обычные информационные сообщения, отображающие состояние приложения.
  • WARN: Предупреждения о возможных проблемах.
  • ERROR: Сообщения об ошибках, когда выполнение операции не удалось