Home » Установка Apache Tomcat 10 на Ubuntu 24
Установка Apache Tomcat 10 на Ubuntu 24

Установка Apache Tomcat 10 на Ubuntu 24

Tomcat 10 на Ubuntu 24 — это классическая связка для деплоя Java-приложений, которая не теряет актуальности уже много лет. Если вы разворачиваете веб-сервисы, API или корпоративные системы на Java, то вам точно понадобится надёжный и быстрый способ настройки этого сервера приложений. В этой статье разберём полный процесс установки и конфигурации Tomcat 10 на свежей Ubuntu 24.04, покажем все подводные камни и поделимся проверенными практиками.

Зачем вообще нужен Tomcat и как он работает?

Apache Tomcat — это lightweight сервер приложений и веб-контейнер, который реализует спецификации Java Servlet, JavaServer Pages (JSP) и Java Expression Language. В отличие от полноценных application серверов типа JBoss или WebSphere, Tomcat фокусируется именно на веб-части и делает это очень эффективно.

Основные преимущества Tomcat:

  • Лёгкость и производительность — минимальный overhead по сравнению с тяжёлыми серверами
  • Простота конфигурации — XML-файлы настроек понятны и логичны
  • Отличная документация — Apache Foundation поддерживает качественную документацию
  • Широкая поддержка — работает практически везде, где есть JVM

Подготовка системы и установка Java

Перед установкой Tomcat нужно подготовить систему. Для комфортной работы рекомендую арендовать VPS с минимум 2GB RAM и 20GB дискового пространства.

Обновляем систему и устанавливаем Java:

sudo apt update && sudo apt upgrade -y
sudo apt install openjdk-11-jdk -y

# Проверяем установку
java -version
javac -version

Настраиваем переменную окружения JAVA_HOME:

echo 'export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64' >> ~/.bashrc
echo 'export PATH=$PATH:$JAVA_HOME/bin' >> ~/.bashrc
source ~/.bashrc

# Проверяем
echo $JAVA_HOME

Создание пользователя для Tomcat

Никогда не запускайте Tomcat под root! Создадим специального пользователя:

sudo groupadd tomcat
sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat

Опции объяснятся просто:

  • -s /bin/false — запрещает логин пользователя
  • -g tomcat — добавляет в группу tomcat
  • -d /opt/tomcat — устанавливает домашнюю директорию

Загрузка и установка Tomcat 10

Скачиваем последнюю версию Tomcat 10 с официального сайта:

cd /tmp
wget https://downloads.apache.org/tomcat/tomcat-10/v10.1.15/bin/apache-tomcat-10.1.15.tar.gz

# Проверяем контрольную сумму (опционально, но рекомендуется)
wget https://downloads.apache.org/tomcat/tomcat-10/v10.1.15/bin/apache-tomcat-10.1.15.tar.gz.sha512
sha512sum -c apache-tomcat-10.1.15.tar.gz.sha512

Распаковываем и настраиваем права:

sudo mkdir /opt/tomcat
sudo tar xzf apache-tomcat-10.1.15.tar.gz -C /opt/tomcat --strip-components=1
sudo chown -R tomcat: /opt/tomcat
sudo sh -c 'chmod +x /opt/tomcat/bin/*.sh'

Конфигурация Tomcat

Создаём systemd service для удобного управления:

sudo nano /etc/systemd/system/tomcat.service

Содержимое файла:

[Unit]
Description=Apache Tomcat Web Application Container
After=network.target

[Service]
Type=forking

Environment=JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid
Environment=CATALINA_HOME=/opt/tomcat
Environment=CATALINA_BASE=/opt/tomcat
Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'

ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh

User=tomcat
Group=tomcat
UMask=0007
RestartSec=10
Restart=always

[Install]
WantedBy=multi-user.target

Обратите внимание на параметры JVM в CATALINA_OPTS — они критично важны для производительности:

  • -Xms512M -Xmx1024M — начальный и максимальный размер heap
  • -XX:+UseParallelGC — использование параллельного сборщика мусора
  • -Djava.awt.headless=true — отключение GUI компонентов

Перезагружаем systemd и запускаем Tomcat:

sudo systemctl daemon-reload
sudo systemctl enable tomcat
sudo systemctl start tomcat
sudo systemctl status tomcat

Настройка веб-интерфейса управления

По умолчанию веб-интерфейс заблокирован. Настроим пользователей:

sudo nano /opt/tomcat/conf/tomcat-users.xml

Добавляем перед закрывающим тегом </tomcat-users>:

<role rolename="manager-gui" />
<role rolename="admin-gui" />
<user username="admin" password="your_strong_password" roles="manager-gui,admin-gui" />

Также нужно разрешить доступ к интерфейсу управления извне:

sudo nano /opt/tomcat/webapps/manager/META-INF/context.xml

Закомментируйте или удалите строку с Valve:

<!-- <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\\.0\\.0\\.1|::1|0:0:0:0:0:0:0:1" /> -->

То же самое для host-manager:

sudo nano /opt/tomcat/webapps/host-manager/META-INF/context.xml

Перезапускаем Tomcat:

sudo systemctl restart tomcat

Настройка firewall и безопасности

Открываем порт 8080 для Tomcat:

sudo ufw allow 8080/tcp
sudo ufw enable
sudo ufw status

Для продакшена рекомендую настроить reverse proxy через nginx:

sudo apt install nginx -y
sudo nano /etc/nginx/sites-available/tomcat

Конфигурация nginx:

server {
    listen 80;
    server_name your-domain.com;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
sudo ln -s /etc/nginx/sites-available/tomcat /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx

Оптимизация производительности

Для высоконагруженных приложений настройте connector в server.xml:

sudo nano /opt/tomcat/conf/server.xml

Найдите секцию Connector и настройте:

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443"
           maxThreads="200"
           minSpareThreads="10"
           maxSpareThreads="50"
           acceptCount="100"
           compression="on"
           compressionMinSize="2048"
           compressableMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json" />

Сравнение с альтернативами

Параметр Tomcat 10 Jetty Undertow
Потребление памяти Среднее Низкое Низкое
Производительность Высокая Высокая Очень высокая
Простота настройки Простая Средняя Сложная
Документация Отличная Хорошая Средняя
Поддержка Jakarta EE Частичная Частичная Частичная

Полезные команды для администрирования

Мониторинг и диагностика:

# Просмотр логов
sudo tail -f /opt/tomcat/logs/catalina.out

# Проверка процессов
ps aux | grep tomcat

# Мониторинг портов
sudo netstat -tlnp | grep :8080

# Информация о JVM
sudo -u tomcat /opt/tomcat/bin/catalina.sh version

# Проверка heap memory
jstat -gc $(pgrep java)

Автоматизация и скрипты

Создайте скрипт для автоматического деплоя приложений:

#!/bin/bash
# deploy.sh

APP_NAME=$1
WAR_FILE=$2
TOMCAT_HOME="/opt/tomcat"

if [ -z "$APP_NAME" ] || [ -z "$WAR_FILE" ]; then
    echo "Usage: $0 <app-name> <war-file>"
    exit 1
fi

# Остановка приложения
sudo systemctl stop tomcat

# Удаление старой версии
sudo rm -rf $TOMCAT_HOME/webapps/$APP_NAME
sudo rm -f $TOMCAT_HOME/webapps/$APP_NAME.war

# Копирование нового WAR
sudo cp $WAR_FILE $TOMCAT_HOME/webapps/$APP_NAME.war
sudo chown tomcat:tomcat $TOMCAT_HOME/webapps/$APP_NAME.war

# Запуск Tomcat
sudo systemctl start tomcat

echo "Deployment completed for $APP_NAME"

Troubleshooting типичных проблем

Проблема: Tomcat не запускается

Решение: Проверьте логи и JAVA_HOME:

sudo journalctl -u tomcat -f
echo $JAVA_HOME
which java

Проблема: OutOfMemoryError

Решение: Увеличьте heap size в service файле:

Environment='CATALINA_OPTS=-Xms1024M -Xmx2048M -server -XX:+UseParallelGC'

Проблема: Медленная работа приложений

Решение: Настройте connector и включите compression

Интеграция с мониторингом

Для мониторинга Tomcat установите JMX:

sudo nano /opt/tomcat/bin/setenv.sh

Добавьте:

export CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote"
export CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote.port=9999"
export CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote.ssl=false"
export CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote.authenticate=false"

Для серьёзных проектов рекомендую использовать выделенные серверы с достаточными ресурсами.

Заключение и рекомендации

Tomcat 10 на Ubuntu 24.04 — это проверенная временем связка для Java-приложений. Основные моменты, которые стоит запомнить:

  • Всегда используйте отдельного пользователя для Tomcat
  • Настройте systemd service для удобного управления
  • Используйте reverse proxy для продакшена
  • Мониторьте потребление памяти и производительность
  • Регулярно обновляйте Tomcat до последних версий

Tomcat отлично подходит для небольших и средних проектов, микросервисов, API и веб-приложений. Для enterprise-решений с множеством интеграций лучше рассмотреть полноценные application серверы.

Дополнительные ресурсы:


В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.

Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.

Leave a reply

Your email address will not be published. Required fields are marked