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

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

6 min read DevOps Обновлено 27 Nov 2025
Tomcat 9 на Ubuntu 20.04 с OpenJDK 11
Tomcat 9 на Ubuntu 20.04 с OpenJDK 11

Сервер и логотип Tomcat

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

Проверка JAVA_HOME и вывод пути установки Java

Важно: если сервер используется несколькими пользователями или службами, определите, где удобнее хранить переменные — в /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.

Скачивание и распаковка Tomcat в /opt/tomcat

Задайте переменную CATALINA_HOME в ~/.bashrc (или в /etc/environment, если нужно для всех):

export CATALINA_HOME=/opt/tomcat

Примените и проверьте:

source ~/.bashrc
echo $CATALINA_HOME

Запустите Tomcat вручную:

$CATALINA_HOME/bin/startup.sh

Если всё успешно, увидите логи запуска.

Запуск Apache Tomcat вручную и лог старта

Проверьте, что порт 8080 открыт и слушается:

ss -plnt

Остановите Tomcat перед переходом к настройке прав и сервисов:

$CATALINA_HOME/bin/shutdown.sh
chown -hR tomcat:tomcat /opt/tomcat/

Остановка 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

Аутентификация менеджера Tomcat и редактирование tomcat-users.xml

Редактирование context.xml менеджера

Важно: не оставляйте оставленные комментарии с открытым доступом в продакшене — настройте белый список IP или используйте обратный прокси с аутентификацией.

Шаг 6 — Тестирование

Откройте браузер и перейдите по адресу сервера с портом 8080:

http://10.5.5.34:8080/

Вы увидите стартовую страницу Tomcat, подтверждающую успешную установку.

Главная страница Apache Tomcat

Далее доступ к менеджеру приложений:

http://10.5.5.34:8080/manager/html

Вводим имя пользователя и пароль — откроется Dashboard менеджера:

Панель управления приложениями Tomcat

И хост‑менеджер:

http://10.5.5.34:8080/host-manager/html

Панель управления виртуальными хостами Tomcat

Критерии приёмки

  • 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 для повторной установки

  1. Установить OpenJDK: sudo apt update && sudo apt install default-jdk
  2. Создать пользователя tomcat и каталог /opt/tomcat
  3. Скачать нужную версию Tomcat и распаковать
  4. Назначить владельца tomcat:chown -R tomcat:tomcat /opt/tomcat
  5. Создать systemd‑юнит и включить сервис
  6. Настроить tomcat‑users.xml и ограничение доступа
  7. Тестирование и настройка брандмауэра/обратного прокси

Роль‑ориентированные чек‑листы

Администратор сервера:

  • Проверить наличие 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, применяйте патчи безопасности.

Мини‑методология развертывания (коротко)

  1. Provision (создать VM/контейнер)
  2. Install (установить Java + зависимости)
  3. Deploy (распаковать Tomcat в /opt/tomcat)
  4. Configure (переменные окружения, systemd, users)
  5. Secure (reverse proxy, firewall, users)
  6. 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 или прокси с аутентификацией.

Поделиться: 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 быстро