Развёртывание Tomcat + Java с несколькими инстансами и управлением логами
Полный процесс установки 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.xmlinstances/payment/conf/server.xmlinstances/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.