Установка и настройка Apache Tomcat 9.0.34 на Ubuntu 20.04 с OpenJDK 11

Apache Tomcat — это реализация Java Servlet с открытым исходным кодом от Apache Software Foundation. Помимо контейнера сервлетов, Tomcat поддерживает JavaServer Pages (JSP), Java Expression Language и Java WebSocket. Tomcat предоставляет HTTP‑сервер для Java‑приложений, поддерживает HTTP/2, OpenSSL для JSSE и TLS virtual hosting.
В этом руководстве показано, как установить и настроить Apache Tomcat 9.0.34 с OpenJDK 11 на Ubuntu 20.04 Server (актуальная версия из линейки 20.04). Примеры команд рассчитаны на привилегированного пользователя с sudo.
Требования и подготовка
Минимальные ресурсы, использованные в примере:
- Операционная система: Ubuntu 20.04 Server
- Оперативная память: 1 ГБ
- Свободное место на диске: 25 ГБ
- CPU: 2 ядра
Важно: для продакшена обычно рекомендуют больше памяти и резервирование ресурсов под JVM‑параметры.
Что мы сделаем:
- Установим OpenJDK 11
- Настроим переменную среды JAVA_HOME
- Скачаем и установим Apache Tomcat 9.0.34 в /opt/tomcat
- Настроим Tomcat как systemd‑сервис
- Включим аутентификацию менеджера и хост‑менеджера
- Протестируем работу
Шаг 1 — Установка OpenJDK 11
Обновите индекс пакетов и установите Java (в репозитории Ubuntu 20.04 доступен OpenJDK 11 по умолчанию):
sudo apt update
sudo apt install default-jdkПроверьте версию Java:
java -versionОжидаемый ответ (пример):
openjdk version "11.0.7" 2020-04-14
OpenJDK Runtime Environment (build 11.0.7+10-post-Ubuntu-3ubuntu1)
OpenJDK 64-Bit Server VM (build 11.0.7+10-post-Ubuntu-3ubuntu1, mixed mode, sharing)После этого OpenJDK 11 установлен.
Шаг 2 — Настройка JAVA_HOME
Проверьте доступные альтернативы Java и путь установки:
sudo update-alternatives --config javaЕсли установлена только одна версия, вы увидите сообщение о единственном варианте. Пример каталога установки OpenJDK 11 — /usr/lib/jvm/java-11-openjdk-amd64.
Добавьте переменную JAVA_HOME в системные или пользовательские переменные. В примере мы обновляем /etc/environment и ~/.bashrc.
Откройте /etc/environment (требуется sudo) и добавьте строку:
JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"Затем в ~/.bashrc добавьте:
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATHПримените изменения и проверьте:
source ~/.bashrc
echo $JAVA_HOME
Важно: если сервер используется несколькими пользователями или службами, определите, где удобнее хранить переменные — в /etc/environment для всех пользователей или в профиле конкретного пользователя.
Шаг 3 — Скачивание и установка Apache Tomcat 9.0.34
Мы разместим Tomcat в /opt/tomcat и запустим его от системного пользователя tomcat.
Создайте группу и пользователя:
groupadd tomcat
useradd -s /bin/false -g tomcat -d /opt/tomcat tomcatПерейдите в /opt и скачайте бинарный архив Tomcat:
cd /opt/
wget -q https://downloads.apache.org/tomcat/tomcat-9/v9.0.34/bin/apache-tomcat-9.0.34.tar.gzРаспакуйте и переименуйте директорию:
tar -xf apache-tomcat-9.0.34.tar.gz
mv apache-tomcat-9.*/ tomcat/Измените владельца и сделайте исполняемыми скрипты:
chown -R tomcat:tomcat /opt/tomcat
chmod +x /opt/tomcat/bin/*Теперь Tomcat находится в /opt/tomcat.

Задайте переменную CATALINA_HOME в ~/.bashrc (или в /etc/environment, если нужно для всех):
export CATALINA_HOME=/opt/tomcatПримените и проверьте:
source ~/.bashrc
echo $CATALINA_HOMEЗапустите Tomcat вручную:
$CATALINA_HOME/bin/startup.shЕсли всё успешно, увидите логи запуска.

Проверьте, что порт 8080 открыт и слушается:
ss -plntОстановите Tomcat перед переходом к настройке прав и сервисов:
$CATALINA_HOME/bin/shutdown.sh
chown -hR tomcat:tomcat /opt/tomcat/
Шаг 4 — Настройка Tomcat как systemd‑сервиса
Чтобы Tomcat автоматически стартовал и корректно управлялся, создайте systemd‑юнит.
Создайте файл /etc/systemd/system/tomcat.service:
cd /etc/systemd/system/
vim tomcat.serviceВставьте следующее (сохраните как томкат сервис):
[Unit]
Description=Apache Tomcat 9 Servlet Container
After=syslog.target network.target
[Service]
User=tomcat
Group=tomcat
Type=forking
Environment=CATALINA_PID=/opt/tomcat/tomcat.pid
Environment=CATALINA_HOME=/opt/tomcat
Environment=CATALINA_BASE=/opt/tomcat
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
Restart=on-failure
[Install]
WantedBy=multi-user.targetПерезагрузите конфигурацию systemd и включите сервис:
systemctl daemon-reload
systemctl start tomcat
systemctl enable tomcatПроверьте статус сервиса:
ss -plnt
systemctl status tomcatЕсли сервис активен — Tomcat корректно работает как systemd‑служба.
Шаг 5 — Включение аутентификации менеджера и host‑manager
По умолчанию доступ к менеджеру ограничен. Мы создадим пользователя с правами manager-gui и admin-gui и уберём ограничение по IP для удобства управления (в продакшене вместо снятия фильтра используйте VPN или белый список IP).
Откройте конфигурацию пользователей:
cd /opt/tomcat/conf
vim tomcat-users.xmlДобавьте (замените имя и пароль на свои):
Снимите фильтр по RemoteAddr в manager и host-manager (комментируя Valve) для доступа с любого IP (временно или в защищенной сети):
cd /opt/tomcat/webapps/manager/META-INF/
vim context.xmlНайдите строку с RemoteAddrValve и закомментируйте её:
То же самое для host‑manager:
cd /opt/tomcat/webapps/host-manager/META-INF/
vim context.xmlЗакомментируйте соответствующий Valve.
Перезапустите сервис:
systemctl restart tomcat

Важно: не оставляйте оставленные комментарии с открытым доступом в продакшене — настройте белый список IP или используйте обратный прокси с аутентификацией.
Шаг 6 — Тестирование
Откройте браузер и перейдите по адресу сервера с портом 8080:
Вы увидите стартовую страницу Tomcat, подтверждающую успешную установку.

Далее доступ к менеджеру приложений:
http://10.5.5.34:8080/manager/html
Вводим имя пользователя и пароль — откроется Dashboard менеджера:

И хост‑менеджер:
http://10.5.5.34:8080/host-manager/html

Критерии приёмки
- Tomcat запускается как systemd‑сервис и имеет статус active (running).
- Порт 8080 слушается и отвечает статусом 200 для корня /.
- Доступ к /manager/html возможен после корректного ввода имени и пароля.
- Каталог /opt/tomcat принадлежит пользователю tomcat.
Проверки командой:
systemctl status tomcat
ss -plnt | grep 8080
curl -I http://localhost:8080/
ls -la /opt/tomcatБыстрый SOP — Playbook для повторной установки
- Установить OpenJDK: sudo apt update && sudo apt install default-jdk
- Создать пользователя tomcat и каталог /opt/tomcat
- Скачать нужную версию Tomcat и распаковать
- Назначить владельца tomcat:chown -R tomcat:tomcat /opt/tomcat
- Создать systemd‑юнит и включить сервис
- Настроить tomcat‑users.xml и ограничение доступа
- Тестирование и настройка брандмауэра/обратного прокси
Роль‑ориентированные чек‑листы
Администратор сервера:
- Проверить наличие Java и JAVA_HOME
- Проверить права владельца /opt/tomcat
- Настроить systemd и автозапуск
DevOps / Release инженер:
- Проверить деплой приложений через manager (если разрешено)
- Настроить CI/CD для WAR‑деплоя
- Настроить бэкапы конфигурации и логов
Безопасность / SRE:
- Отключить прямой доступ к /manager на публичных интерфейсах
- Настроить SSL/TLS через обратный прокси (nginx/Apache) или JSSE
- Ограничить права пользователя tomcat
Проверки и тестовые сценарии
Тесты приёмки:
- curl -I http://localhost:8080/ => HTTP/1.1 200 OK
- Вход в /manager/html с учётными данными => 200 OK и отображение Dashboard
- Попытка записи в /opt/tomcat от не‑tomcat пользователя => отказ (permission denied)
- systemctl restart tomcat => сервис перезапускается без ошибок
Отладка — распространённые проблемы и решения
Проблема: Tomcat не стартует (systemctl status показывает failed)
- Проверьте логи в /opt/tomcat/logs/catalina.out
- Проверьте права на /opt/tomcat/bin/* и наличие исполняемых флагов
- Убедитесь, что JAVA_HOME корректно задан и доступен для пользователя tomcat
Проблема: 404 на /manager/html
- Убедитесь, что webapp manager присутствует в /opt/tomcat/webapps/manager
- Проверьте tomcat-users.xml на корректность XML и отсутствие ошибок парсинга
Проблема: «Address already in use: bind» при старте
- Проверьте, не занят ли порт 8080 другим процессом: ss -plnt | grep 8080
- Измените порт в /opt/tomcat/conf/server.xml при необходимости
Повышение безопасности (рекомендации)
- Не храните пароли в открытом виде в репозиториях; используйте секреты/HashiCorp Vault/Ansible Vault.
- Разместите Tomcat за обратным прокси (nginx) и вынесите SSL‑терминацию на прокси.
- Отключите manager/host‑manager на публичных интерфейсах или защитите их сетью.
- Уменьшите привилегии процесса (uLimit, capability), используйте отдельного пользователя без shell.
- Регулярно обновляйте Tomcat и Java, применяйте патчи безопасности.
Мини‑методология развертывания (коротко)
- Provision (создать VM/контейнер)
- Install (установить Java + зависимости)
- Deploy (распаковать Tomcat в /opt/tomcat)
- Configure (переменные окружения, systemd, users)
- Secure (reverse proxy, firewall, users)
- Test (health checks, функциональные тесты)
Факт‑бокс (ключевые параметры)
- Версия Tomcat в примере: 9.0.34
- OpenJDK: 11 (LTS)
- Стандартный порт Tomcat: 8080
- Путь установки в примере: /opt/tomcat
Диаграмма принятия решения (когда использовать этот подход)
flowchart TD
A[Нужен Java‑сервер приложений] --> B{Есть требование к версии Java}
B -- Java 11 --> C[Tomcat 9 + OpenJDK 11 — подходит]
B -- ниже 11 --> D[Рассмотреть Tomcat 8 или изменить JDK]
C --> E{Продакшен или тест}
E -- Тест --> F[Включаем manager доступ с локальной сети]
E -- Продакшен --> G[Размещаем за reverse proxy, включаем SSL]Короткий словарь
- JVM — виртуальная машина Java
- JSP — JavaServer Pages, технология шаблонов
- WAR — Web Application Archive, формат упаковки Java‑вебприложений
Советы по миграции и совместимости
- При переносе приложений с другой версии Tomcat проверьте совместимость web.xml, API и библиотек.
- Если требуется поддержка HTTP/2, настройте обратный прокси (nginx) или примените Tomcat с включённым Apr/Native.
Итог
Вы настроили Apache Tomcat 9.0.34 на Ubuntu 20.04 с OpenJDK 11, запустили его как systemd‑сервис и включили доступ к менеджеру приложений. Следующие шаги — настроить обратный прокси и SSL, интегрировать CI/CD для деплоя WAR и внедрить мониторинг (логирование, метрики). Если требуется помощь по настройке SSL/NGINX или CI‑pipeline для Tomcat, можно продолжить по этим направлениям.
Важно: В продакшене не стоит оставлять менеджер и host‑manager открытыми в публичной сети. Используйте VPN/белые списки IP или прокси с аутентификацией.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента