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

Введение
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
Ожидаемый вывод: строка с версией 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
Получим информацию о пакете tomcat9:
sudo apt info tomcat9
Установите основные пакеты (сервер, админ-интерфейс, примеры):
sudo apt install tomcat9 tomcat9-admin tomcat9-examples
Проверьте состояние сервиса и его автозапуск при старте системы:
sudo systemctl is-enabled tomcat9
sudo systemctl status tomcat9
Основные конфигурационные пути (при установке из APT):
- /etc/default/tomcat9 — параметры запуска, JAVA_OPTS и т.д.
- /etc/tomcat9/ — конфигурационные файлы Tomcat
- /var/lib/tomcat9/ — директория данных, webapps и т.д.
- /usr/share/tomcat9-admin/ — web-приложения админки
Чтобы проверить установку, откройте в браузере http://SERVER_IP:8080/ — должна отобразиться стартовая страница Tomcat.

Плюсы установки из APT:
- Простота: apt автоматически устанавливает зависимости и systemd-манифесты.
- Поддержка обновлений через apt.
Ограничения:
- Устанавливается фиксированная версия (в Ubuntu 22.04 — Tomcat 9). Если нужен Tomcat 10+, используйте Binary Distribution или контейнеры.
Установка из Binary Distribution (пример: Tomcat 10)
Если требуется конкретная версия Tomcat, скачайте и установите бинарный дистрибутив.
- Создайте системного пользователя tomcat без права входа в систему и с домашней директорией /opt/tomcat:
sudo useradd -m -u -d /opt/tomcat -s /usr/sbin/nologin tomcatПримечание: ключ -u обычно принимает числовой UID; если вы хотите задать конкретный UID, укажите число. Если оставите без -u, пользователь будет создан с новым UID.
- Скачайте нужную версию (пример 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- Создайте директорию и распакуйте архив:
mkdir -p /opt/tomcat
sudo tar -xf apache-tomcat-${VERSION}.tar.gz -C /opt/tomcat- Создайте символьную ссылку на «последнюю» версию для удобства:
sudo ln -s /opt/tomcat/apache-tomcat-${VERSION} /opt/tomcat/latest- Измените владельца директорий на tomcat:
sudo chown -R tomcat:tomcat /opt/tomcat- Создайте 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Сохраните и закройте файл.
- Примените изменения systemd и запустите сервис:
sudo systemctl daemon-reload
sudo systemctl enable tomcat
sudo systemctl start tomcat
sudo systemctl status tomcat
- Откройте в браузере http://SERVER_IP:8080/ — должна появиться стартовая страница 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Теперь адреса для доступа:
- http://SERVER_IP:8080/manager/ — менеджер приложений
- http://SERVER_IP:8080/host-manager/ — управление виртуальными хостами


Важно: держите админ-панели доступными только для доверенных IP. В продакшене используйте HTTPS, VPN или SSH-туннель для доступа.
Настройка Apache2 как обратного прокси для Tomcat
Обратный прокси помогает:
- Прятать стандартный порт 8080 от внешнего мира
- Использовать TLS/SSL через Apache2 (Let’s Encrypt)
- Разгружать статику
Установите Apache2:
sudo apt install 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 и добавить запись сервера.

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

Рекомендации по безопасности
Важно применять базовые меры безопасности при развёртывании 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-системы.
Отладка и распространённые проблемы
- Порт 8080 занят. Проверьте, какой процесс слушает порт:
sudo ss -tulpn | grep 8080- Сервис не стартует. Посмотрите журналы:
sudo journalctl -u tomcat -b
# или для tomcat9
sudo journalctl -u tomcat9 -bНеверные права в /opt/tomcat — убедитесь, что владелец tomcat:tomcat и права корректны.
Ошибки при деплое WAR — проверьте catalina.out и логи webapps/your-app/.
Проблемы с проксированием — проверьте конфигурацию ProxyPass/ProxyPassReverse и заголовки Host.
Страница 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 развёртывания (короткая инструкция)
- Обновить систему: sudo apt update && sudo apt upgrade
- Установить JDK: sudo apt install default-jdk
- Выбрать метод установки Tomcat (APT или Binary) и выполнить шаги установки
- Настроить tomcat-users.xml и context.xml для manager
- Настроить systemd unit если нужно
- Настроить Apache/Nginx как обратный прокси и включить HTTPS
- Перезапустить сервисы и проверить доступ
- Настроить мониторинг и резервное копирование
Примеры тест-кейсов
- Проверка доступа к корню: 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
Спасибо за внимание.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента