- Home »

Установка 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 серверы.
Дополнительные ресурсы:
В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.
Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.