diff --git a/docs/Vebsrv/Tomcat.md b/docs/Vebsrv/Tomcat.md new file mode 100644 index 0000000..25950ab --- /dev/null +++ b/docs/Vebsrv/Tomcat.md @@ -0,0 +1,110 @@ +### Установка Tomcat + +[Документация](https://tomcat.apache.org/tomcat-8.5-doc/introduction.html) + +- `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` +```bash +[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` + +```bash +/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 основные блоки конфигурации включают: + +- `` — корневой блок файла, внутри которого настраиваются все остальные элементы. + +- `` — определяет, куда будут направляться логи (например, в файл, консоль, удалённый сервер): + - `ConsoleAppender` — вывод в консоль (обычно используется для отладки). + - `FileAppender` — запись логов в файл. + - `RollingFileAppender` — запись в файл с ротацией по размеру или дате. + - `SocketAppender` — отправка логов на удалённый сервер. + +- `` — внутри аппендера определяет форматирование логов (например, шаблоны с датой, уровнем лога и сообщением). +- `` — задаёт общий уровень логгирования (например, INFO, DEBUG) и связывает его с аппендерами. +- `` — настраивает уровень логгирования для отдельных классов или пакетов приложения (переопределяет ``). + +- `TRACE`: Самый детализированный уровень, для отладки. +- `DEBUG`: Для отладки, но с меньшей детализацией, чем TRACE. +- `INFO`: Обычные информационные сообщения, отображающие состояние приложения. +- `WARN`: Предупреждения о возможных проблемах. +- `ERROR`: Сообщения об ошибках, когда выполнение операции не удалось