Развёртывание Tomcat + Java с несколькими инстансами и управлением логами

From wiki.baghirzade.pro
Jump to navigation Jump to search

Полный процесс установки Java, Apache Tomcat, развёртывания WAR-приложений и настройки мульти-инстансной среды с архивированием логов.

📦 1. Загрузка Java и Tomcat

wget https://download.java.net/java/GA/jdk19.0.1/afdd2e245b014143b62ccb916125e3ce/10/GPL/openjdk-19.0.1_linux-x64_bin.tar.gz
wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.96/bin/apache-tomcat-9.0.96.tar.gz

📁 2. Подготовка директорий

mkdir ~/java_version mkdir ~/tomcats

🚀 3. Скачивание и деплой .war приложения (одиночный инстанс)

wget https://dlcdn.apache.org/maven/maven-3/3.9.9/binaries/apache-maven-3.9.9-bin.tar.gz

Добавьте Maven в ~/.bash_profile, затем:

git clone https://github.com/daticahealth/java-tomcat-maven-example.git cd java-tomcat-maven-example mvn package cp target/java-tomcat-maven-example.war ~/tomcats/apache-tomcat-9.0.96/webapps/

⚙️ 4. Создание нескольких инстансов Tomcat

mkdir -p ~/tomcat9/{bin,lib,instances/{price,payment,catalog}}

Распакуйте архив в каждый инстанс:

tar -xf apache-tomcat-9.0.96.tar.gz -C ~/tomcat9/instances/catalog/ tar -xf apache-tomcat-9.0.96.tar.gz -C ~/tomcat9/instances/payment/ tar -xf apache-tomcat-9.0.96.tar.gz -C ~/tomcat9/instances/price/

Создайте скрипты запуска/остановки:

vim ~/tomcat9/startup.sh vim ~/tomcat9/stop.sh

Копируйте бинарные файлы Tomcat в ~/tomcat9/bin и библиотеки в ~/tomcat9/lib

Измените порты в файлах:

  • instances/price/conf/server.xml
  • instances/payment/conf/server.xml
  • instances/catalog/conf/server.xml

(например, измените 8080, 8005, 8009 на уникальные для каждого инстанса)

📑 5. Логирование: архивирование catalina.out при размере > 50 MB

Создайте cron-скрипт /usr/local/bin/archive_catalina.sh:

#!/bin/bash
LOG_FILE="/opt/tomcats/tomcat9/instances/*/logs/catalina.out"
for file in $LOG_FILE; do
  if [ -f "$file" ]; then
    size=$(stat -c%s "$file")
    if [ $size -gt 52428800 ]; then
      timestamp=$(date +"%Y%m%d_%H%M%S")
      tar -czf "$file.$timestamp.tar.gz" "$file"
      > "$file"
    fi
  fi
done
find /opt/tomcats/tomcat9/instances/*/logs -name '*.tar.gz' -mtime +1 -exec rm {} \;

Сделайте исполняемым:

chmod +x /usr/local/bin/archive_catalina.sh

Добавьте в crontab:

crontab -e

  • /10 * * * * /usr/local/bin/archive_catalina.sh

(каждые 10 минут проверка на размер и архивирование)

✅ Теперь Java-приложения развернуты в разных инстансах Tomcat, WAR-файл задеплоен, и логи автоматически архивируются при достижении 50MB.