Гид по технологиям

Установка Apache Tomcat на Ubuntu 22.04

• 9 min read • DevOps • Обновлено 25 Nov 2025
Установка Apache Tomcat на Ubuntu 22.04
Установка Apache Tomcat на Ubuntu 22.04

логотип Apache Tomcat

Введение

Apache Tomcat (обычно «Tomcat») — это свободный контейнер Java Servlet и реализация JavaServer Pages, Java Expression Language и WebSocket. Tomcat предоставляет серверную среду на «чистом Java», где могут выполняться Java-приложения. Проект развивается в составе Apache Software Foundation и распространяется под лицензией Apache License v2.

Tomcat популярен как лёгкий и кроссплатформенный сервер приложений. Он поддерживает SSL/TLS, хорошо подходит для сред с ограниченными ресурсами и может работать на Unix-подобных системах, Windows и macOS.

В этом материале подробно показано, как установить Tomcat на Ubuntu 22.04 двумя способами, как настроить доступ к интерфейсу администрирования и как использовать Apache2 как обратный прокси.

Важно: в примерах используются порты по умолчанию (8080) и локальные пути. Заменяйте IP-адреса, имена хостов и пароли на значения вашей среды.

Что потребуется

  • Сервер с Ubuntu 22.04
  • root-пользователь или учётная запись с правами sudo
  • Доступ к интернету для загрузки пакетов и дистрибутивов

Кому полезно это руководство

  • DevOps-инженерам, которые разворачивают Java-приложения
  • Разработчикам, которым нужно локально протестировать WAR-файлы
  • Сисадминам, ведущим поддержку сервисов на Tomcat

Быстрый обзор подходов к установке

  • Установка из APT (tomcat9) — быстро, интегрируется с systemd и пакетной системой Ubuntu. Подходит, если вам достаточно Tomcat 9.
  • Установка из Binary Distribution — гибко, подходит для конкретной версии (например, Tomcat 10). Требует ручной настройки владельцев, прав и systemd-сервиса.
  • Альтернатива: контейнеры Docker — удобны для изоляции и быстрой смены версий.

Установка Java (OpenJDK)

Tomcat — Java-приложение, поэтому сначала нужно установить JDK. В репозиториях Ubuntu 22.04 по умолчанию доступен OpenJDK 11, совместимый с Tomcat 9 и Tomcat 10.

Обновите индексы пакетов:

sudo apt update

Установите пакет по умолчанию (default-jdk):

sudo apt install default-jdk

Подтвердите установку, нажмите Y и Enter. После установки проверьте версию:

java -version

процесс установки Java

Ожидаемый вывод: строка с версией OpenJDK 11.

Важно: если ваше приложение требует Java 17 или 21, установите соответствующий пакет (openjdk-17-jdk и т. п.) и убедитесь, что JAVA_HOME указывает на установленный JDK.

Установка Apache Tomcat: обзор методов

На Ubuntu доступны два распространённых подхода:

  • Из репозитория APT: sudo apt install tomcat9 — быстрый и простой способ. Поставляется Tomcat 9.
  • Из Binary Distribution: ручная установка нужной версии (например, 10.0.22). Больше контроля и гибкости.

Ниже — полные инструкции для обоих вариантов.

Установка из репозитория Ubuntu (Tomcat 9)

Проверим доступные пакеты:

sudo apt search tomcat

поиск пакетов Tomcat в APT

Получим информацию о пакете tomcat9:

sudo apt info tomcat9

информация о пакете tomcat9

Установите основные пакеты (сервер, админ-интерфейс, примеры):

sudo apt install tomcat9 tomcat9-admin tomcat9-examples

установка tomcat9

Проверьте состояние сервиса и его автозапуск при старте системы:

sudo systemctl is-enabled tomcat9
sudo systemctl status tomcat9

статус сервиса tomcat9

Основные конфигурационные пути (при установке из APT):

  • /etc/default/tomcat9 — параметры запуска, JAVA_OPTS и т.д.
  • /etc/tomcat9/ — конфигурационные файлы Tomcat
  • /var/lib/tomcat9/ — директория данных, webapps и т.д.
  • /usr/share/tomcat9-admin/ — web-приложения админки

Чтобы проверить установку, откройте в браузере http://SERVER_IP:8080/ — должна отобразиться стартовая страница Tomcat.

стартовая страница tomcat9

Плюсы установки из APT:

  • Простота: apt автоматически устанавливает зависимости и systemd-манифесты.
  • Поддержка обновлений через apt.

Ограничения:

  • Устанавливается фиксированная версия (в Ubuntu 22.04 — Tomcat 9). Если нужен Tomcat 10+, используйте Binary Distribution или контейнеры.

Установка из Binary Distribution (пример: Tomcat 10)

Если требуется конкретная версия Tomcat, скачайте и установите бинарный дистрибутив.

  1. Создайте системного пользователя tomcat без права входа в систему и с домашней директорией /opt/tomcat:
sudo useradd -m -u -d /opt/tomcat -s /usr/sbin/nologin tomcat

Примечание: ключ -u обычно принимает числовой UID; если вы хотите задать конкретный UID, укажите число. Если оставите без -u, пользователь будет создан с новым UID.

  1. Скачайте нужную версию (пример 10.0.22):
export VERSION=10.0.22
wget https://www-eu.apache.org/dist/tomcat/tomcat-10/v${VERSION}/bin/apache-tomcat-${VERSION}.tar.gz
  1. Создайте директорию и распакуйте архив:
mkdir -p /opt/tomcat
sudo tar -xf apache-tomcat-${VERSION}.tar.gz -C /opt/tomcat
  1. Создайте символьную ссылку на «последнюю» версию для удобства:
sudo ln -s /opt/tomcat/apache-tomcat-${VERSION} /opt/tomcat/latest
  1. Измените владельца директорий на tomcat:
sudo chown -R tomcat:tomcat /opt/tomcat
  1. Создайте unit-файл systemd для управления сервисом Tomcat. Откройте файл:
sudo nano /etc/systemd/system/tomcat.service

Вставьте конфигурацию:

[Unit]
Description=Tomcat 10 servlet container
After=network.target

[Service]
Type=forking

User=tomcat
Group=tomcat

Environment="JAVA_HOME=/usr/lib/jvm/default-java"
Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom -Djava.awt.headless=true"

Environment="CATALINA_BASE=/opt/tomcat/latest"
Environment="CATALINA_HOME=/opt/tomcat/latest"
Environment="CATALINA_PID=/opt/tomcat/latest/temp/tomcat.pid"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"

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

[Install]
WantedBy=multi-user.target

Сохраните и закройте файл.

  1. Примените изменения systemd и запустите сервис:
sudo systemctl daemon-reload
sudo systemctl enable tomcat
sudo systemctl start tomcat
sudo systemctl status tomcat

проверка сервиса tomcat

  1. Откройте в браузере http://SERVER_IP:8080/ — должна появиться стартовая страница Tomcat 10.

стартовая страница tomcat 10

Плюсы установки вручную:

  • Можно установить любую версию Tomcat.
  • Полный контроль над путями и правами.

Минусы:

  • Необходимы ручные шаги по настройке автозапуска и прав.
  • Обновления проводятся вручную.

Настройка интерфейса администрирования (manager, host-manager)

Чтобы получить доступ к web-интерфейсу управления, добавьте пользователя с ролью администратора в tomcat-users.xml.

Если Tomcat установлен из APT, файл находится по пути:

sudo nano /etc/tomcat9/tomcat-users.xml

Если Tomcat установлен вручную (Binary), файл — в каталоге conf:

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

Добавьте роли и пользователя (замените admin и tomcatadmin на свои значения):




  
  
  
  
  
  
  

Далее необходимо разрешить доступ к web-приложениям manager и host-manager. Откройте файлы context.xml в соответствующих директориях.

Для установки из APT:

sudo nano /usr/share/tomcat9-admin/host-manager/META-INF/context.xml
sudo nano /usr/share/tomcat9-admin/manager/META-INF/context.xml

Для установки вручную:

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

Варианты настройки доступа:

  • Сделать доступ публичным (не рекомендуется в продакшене): закомментировать Valve RemoteAddrValve.
  • Разрешить доступ только с конкретного IP:
  

После изменений перезапустите сервис:

# для установки из APT
sudo systemctl restart tomcat9

# для вручную установленного Tomcat
sudo systemctl restart tomcat

Теперь адреса для доступа:

web-интерфейс менеджера Tomcat

host-manager Tomcat

Важно: держите админ-панели доступными только для доверенных IP. В продакшене используйте HTTPS, VPN или SSH-туннель для доступа.

Настройка Apache2 как обратного прокси для Tomcat

Обратный прокси помогает:

  • Прятать стандартный порт 8080 от внешнего мира
  • Использовать TLS/SSL через Apache2 (Let’s Encrypt)
  • Разгружать статику

Установите Apache2:

sudo apt install apache2

установка apache2

Включите модулі proxy и proxy_http:

sudo a2enmod proxy proxy_http

Создайте виртуальный хост (пример):

sudo nano /etc/apache2/sites-available/tomcat.conf

Пример конфигурации:


    ServerName howtoforge.local

    ProxyRequests On
    ProxyPass / http://localhost:8080/
    ProxyPassReverse / http://localhost:8080/

    ProxyPass /examples http://localhost:8080/examples/
    ProxyPassReverse /examples http://localhost:8080/examples/

    
      Order allow,deny
      Allow from all
    

    
      Order allow,deny
      Allow from all
    

Сохраните, активируйте сайт и проверьте конфигурацию apache:

sudo a2ensite tomcat.conf
sudo apachectl configtest
sudo systemctl restart apache2

Откройте http://howtoforge.local — вы должны увидеть индекс Tomcat. Для локального теста можно править /etc/hosts и добавить запись сервера.

Tomcat через обратный прокси Apache

Для доступа к примерам приложения добавьте путь /examples:

Примеры Tomcat через Apache

Рекомендации по безопасности

Важно применять базовые меры безопасности при развёртывании Tomcat:

  • Запускайте Tomcat от непривилегированного пользователя (tomcat), не root.
  • Отключите или ограничьте доступ к manager и host-manager.
  • Используйте TLS (HTTPS) на фронтенде (Apache или Nginx) и редирект HTTP→HTTPS.
  • Ограничьте доступ firewall (ufw/iptables) к портам 22/80/443/8080 по необходимости.
  • Обновляйте Tomcat и JDK регулярно.
  • Установите SELinux/AppArmor профили для дополнительной изоляции (если применимо).
  • Отключайте демонстрационные приложения в production (examples, docs).

Пример базовых команд для ufw:

sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable

Критически важно: храните секреты (пароли, ключи) вне репозиториев и используйте vault-системы.

Отладка и распространённые проблемы

  1. Порт 8080 занят. Проверьте, какой процесс слушает порт:
sudo ss -tulpn | grep 8080
  1. Сервис не стартует. Посмотрите журналы:
sudo journalctl -u tomcat -b
# или для tomcat9
sudo journalctl -u tomcat9 -b
  1. Неверные права в /opt/tomcat — убедитесь, что владелец tomcat:tomcat и права корректны.

  2. Ошибки при деплое WAR — проверьте catalina.out и логи webapps/your-app/.

  3. Проблемы с проксированием — проверьте конфигурацию ProxyPass/ProxyPassReverse и заголовки Host.

  4. Страница 404 для /manager — убедитесь, что вы добавили пользователя с ролью manager-gui в tomcat-users.xml и перезапустили Tomcat.

Альтернативные подходы

  • Docker: используйте официальные образы tomcat на Docker Hub. Быстрое создание изолированной среды.
  • Podman/Kubernetes: для масштабируемых production-решений.
  • Nginx вместо Apache: Nginx тоже отлично работает как обратный прокси и поддерживает более гибкое управление потоками.

Краткое сравнение:

  • APT: простота, интеграция с системой.
  • Binary: гибкость по версии.
  • Docker: изоляция и переносимость.

Проверки приёмки после установки

Критерии приёмки для успешной установки:

  • Tomcat запущен и слушает порт 8080: curl -I http://localhost:8080/ отвечает 200.
  • Manager и host-manager доступны только авторизованным пользователям.
  • Apache2 правильно проксирует запросы на Tomcat.
  • Сервис автоматически стартует при перезагрузке (systemctl is-enabled tomcat).
  • Логи не содержат критических ошибок при попытке деплоя тестового приложения.

Роль-based контрольный список

Для системного администратора:

  • Установить JDK и Tomcat.
  • Настроить systemd unit.
  • Настроить firewall и SELinux/AppArmor.
  • Настроить резервное копирование /opt/tomcat и конфигов.

Для DevOps:

  • Подготовить CI/CD для деплоя WAR-файлов.
  • Настроить мониторинг и метрики (JMX, Prometheus экспортеры).

Для разработчика:

  • Протестировать приложение локально в Tomcat.
  • Убедиться, что зависимости и Java-версия соответствуют требованиям.

Playbook развёртывания (короткая инструкция)

  1. Обновить систему: sudo apt update && sudo apt upgrade
  2. Установить JDK: sudo apt install default-jdk
  3. Выбрать метод установки Tomcat (APT или Binary) и выполнить шаги установки
  4. Настроить tomcat-users.xml и context.xml для manager
  5. Настроить systemd unit если нужно
  6. Настроить Apache/Nginx как обратный прокси и включить HTTPS
  7. Перезапустить сервисы и проверить доступ
  8. Настроить мониторинг и резервное копирование

Примеры тест-кейсов

  • Проверка доступа к корню: curl -I http://localhost:8080/ — ожидается 200 OK.
  • Авторизация в /manager: доступ по логину/паролю.
  • Деплой тестового WAR: проверить, что приложение развёрнуто без ошибок и отвечает.
  • Перезагрузка сервера: службы Tomcat и Apache автоматически стартуют.

Шаблоны и сниппеты

systemd unit для Tomcat приведён выше. Дополнительный snippet: настройка JAVA_OPTS в /etc/default/tomcat9 (APT):

# Пример /etc/default/tomcat9
JAVA_HOME=/usr/lib/jvm/default-java
JAVA_OPTS="-Djava.awt.headless=true -Xms256M -Xmx512M"

Пример настройки Let’s Encrypt (Certbot) для Apache:

sudo apt install certbot python3-certbot-apache
sudo certbot --apache -d example.com -d www.example.com

Миграция с Tomcat 9 на Tomcat 10 — что учесть

  • Tomcat 10 использует новый пакет javax → jakarta.* namespace. Если ваше приложение привязано к javax, потребуется миграция к jakarta (или оставаться на Tomcat 9).
  • Проверьте зависимости и используемые библиотеки. Часто требуется заменить зависимости в сборке.
  • Тестируйте в изолированной среде перед переходом в production.

Матрица совместимости (коротко)

  • Java 11 — совместима с Tomcat 9, совместима с Tomcat 10 при корректной сборке приложения.
  • Tomcat 9 — поддерживает javax API.
  • Tomcat 10 — использует jakarta API.

Матрица рисков и смягчения

  • Неправильные права на каталоги → риск удалённого выполнения. Смягчение: проверка chown и chmod, запуск от непривилегированного пользователя.
  • Открытые админ-интерфейсы → риск компрометации. Смягчение: ограничение по IP, HTTPS, VPN.
  • Несовместимость приложений при миграции → отказ в работе. Смягчение: тестирование на staging, использование контейнеров для обратимость.

Краткие советы по оптимизации производительности

  • Настройте Xms/Xmx в CATALINA_OPTS в зависимости от объёма приложения.
  • Используйте G1GC или ParallelGC в зависимости от профиля нагрузки.
  • Убирайте неиспользуемые webapp (ROOT, examples) в production.
  • Включите сжатие (gzip) на фронтенде (Apache/Nginx) для снижения трафика.

Частые ошибки и быстрые решения

  • Tomcat не стартует: проверьте catalina.out и journalctl.
  • 403 при доступе к manager: проверьте context.xml и tomcat-users.xml; убедитесь, что IP не заблокирован.
  • Прокси выдаёт 502/504: проверьте, слушает ли Tomcat 8080 и доступен ли localhost:8080.

Часто задаваемые вопросы

Как проверить версию Tomcat?

Откройте главную страницу Tomcat в браузере или посмотрите файл /opt/tomcat/latest/RELEASE-NOTES или /usr/share/tomcat9/RELEASE-NOTES.

Можно ли запускать несколько экземпляров Tomcat на одном сервере?

Да, но необходимо использовать разные CATALINA_BASE и порты, а также разные systemd unit-файлы и пользователей для изоляции.

Как безопасно хранить пароли для tomcat-users.xml?

По умолчанию пароли хранятся в открытом виде. Рекомендуется ограничить доступ к файлу и использовать внешние механизмы аутентификации (например, LDAP, контейнерные секреты или прокси-аутентификацию).


Заключение

Поздравляем — вы установили и настроили Apache Tomcat на Ubuntu 22.04. Вы узнали два способа установки: быстрый (APT) и более гибкий (Binary). Также настроили веб-администрирование, systemd-сервис и обратный прокси через Apache2. В руководстве приведены рекомендации по безопасности, отладке и базовый playbook для развёртывания.

Важно: перед переводом в production протестируйте конфигурацию на staging, настройте резервные копии и мониторинг.

Результаты, которые вы должны получить:

  • Рабочий Tomcat, доступный по адресу http://server:8080/ или через Apache2 reverse proxy
  • Защищённые админ-интерфейсы благодаря ограничению по IP/HTTPS
  • Автоматический запуск Tomcat через systemd

Спасибо за внимание.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро