Установка Apache Tomcat 10 на Ubuntu 20.04
В этой инструкции пошагово показано, как установить Apache Tomcat 10 на Ubuntu 20.04: установить JDK, загрузить и распаковать Tomcat 10, создать системного пользователя и unit-файл systemd, открыть доступ к менеджеру и проверить работу сервера на порту 8080. Включены рекомендации по безопасности, отладке и альтернативные способы установки.
Почему это важно
Apache Tomcat — легковесный и широко используемый контейнер сервлетов для запуска Java-веб-приложений (JSP, Servlet, WebSocket). Эта инструкция поможет запустить Tomcat 10 локально или на сервере Ubuntu 20.04 и обеспечить базовую безопасность и управляемость сервиса.
Краткие определения
- JDK: Java Development Kit — набор инструментов для запуска и разработки Java-приложений.
- Tomcat: контейнер сервлетов и HTTP-сервер для Java-приложений.
Содержание
- Требования и подготовка
- Установка Java (последняя версия)
- Загрузка и установка Apache Tomcat 10
- Создание учётной записи и права доступа
- Разрешение доступа к приложениям manager / host-manager
- Systemd unit для управления Tomcat
- Доступ к веб-интерфейсу
- Безопасность и жёсткие рекомендации
- Альтернативные варианты установки
- Отладка и runbook при сбоях
- Роль‑ориентированные чеклисты
- Критерии приёмки
- Короткое объявление для команды
- Итог и ссылки
1. Требования и подготовка
Перед началом убедитесь в следующем:
- У вас есть доступ к серверу с Ubuntu 20.04 (локально или через SSH) с правами sudo.
- Свежая система: выполните обновление пакетов.
- Если вы только что установили систему, добавьте отдельного пользователя для повседневной работы и выполнения команд с sudo.
Команда для обновления пакетов:
sudo apt update
sudo apt upgrade -yВажно: Tomcat — Java-приложение. Для корректной работы требуется JDK версии 8 или выше (Tomcat 10 поддерживает JDK 8+). Неподходящая версия JDK приведёт к ошибкам запуска.
2. Установка Java (The Latest Version)
Установим стандартную версию JDK из репозиториев Ubuntu:
sudo apt updatesudo apt install default-jdk -y
Опция -y автоматически подтверждает установку. Проверьте установленную версию Java:
java -version
Ожидаемая строка содержит информацию о OpenJDK или другом установленном JDK. Если версия ниже 8, обновите JDK до 8+.
3. Apache Tomcat 10 — загрузка и установка
Скачиваем официальный релиз Tomcat 10. В примерах используется v10.0.18 — при чтении позже замените номер версии на актуальный.
wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.0.18/bin/apache-tomcat-10.0.18.tar.gz
Распакуйте архив:
tar xvf apache-tomcat-10.0.18.tar.gz
Переместите распакованную директорию в системное место, например /usr/share/apache-tomcat:
sudo mv apache-tomcat-10.0.18 /usr/share/apache-tomcat
Альтернатива — распаковать сразу в целевую директорию и убрать первый уровень архива:
sudo tar xzvf apache-tomcat-10*tar.gz -C /opt/tomcat --strip-components=1Выбор директории (/opt/tomcat или /usr/share/apache-tomcat) зависит от вашей политики организации. В дальнейшем в примерах используется /usr/share/apache-tomcat.
4. Создание пользователя Tomcat и права доступа
Для безопасности выполняйте Tomcat под непривилегированным системным пользователем.
Создайте пользователя и группу tomcat (если ещё не созданы):
sudo groupadd --system tomcat
sudo useradd -s /bin/false -g tomcat -d /usr/share/apache-tomcat tomcatОткройте файл с пользователями менеджера Tomcat для добавления аккаунтов администратора и менеджера:
sudo nano /opt/tomcat/conf/tomcat-users.xmlВставьте / отредактируйте строки для пользователя с ролями manager-gui и admin-gui. Установите надёжные пароли.

Настройте права на каталог Tomcat:
sudo chown -R tomcat:tomcat /opt/tomcat/
sudo chmod -R u+x /opt/tomcat/binЭти команды гарантируют, что только пользователь tomcat сможет запускать скрипты внутри bin.
5. Разрешение доступа к менеджеру и host-manager
По умолчанию веб-приложения manager и host-manager ограничивают доступ по IP. Откройте соответствующие context.xml и добавьте нужные адреса или разрешите все (не рекомендуется в продакшне).
sudo nano /opt/tomcat/webapps/manager/META-INF/context.xmlsudo nano /opt/tomcat/webapps/host-manager/META-INF/context.xmlВ строке allow укажите допустимые IP, например локальные адреса и ваш управляющий IP:
allow="127\.
\d+\.
\d+\.
\d+|::1|0:0:0:0:0:0:0:1|10.0.2.15" />
Совет: в продакшне лучше вместо wildcard разрешений использовать firewall и reverse proxy с аутентификацией.
6. Systemd unit для управления Tomcat
Создайте unit-файл systemd, чтобы управлять Tomcat как службой.
sudo nano /etc/systemd/system/tomcat.serviceВставьте содержимое ниже (корневые пути должны соответствовать вашей установке):
[Unit]
Description=Tomcat
After=syslog.target network.target
[Service]
Type=forking
User=tomcat
Group=tomcat
Environment=JAVA_HOME=/usr/lib/jvm/default-java
Environment='JAVA_OPTS=-Djava.awt.headless=true'
Environment=CATALINA_HOME=/usr/share/apache-tomcat
Environment=CATALINA_BASE=/usr/share/apache-tomcat
Environment=CATALINA_PID=/usr/share/apache-tomcat/temp/tomcat.pid
ExecStart=/usr/share/apache-tomcat/bin/catalina.sh start
ExecStop=/usr/share/apache-tomcat/bin/catalina.sh stop
[Install]
WantedBy=multi-user.target

Перезагрузите демон systemd и включите сервис:
sudo systemctl daemon-reloadsudo systemctl start tomcat.servicesudo systemctl enable tomcat.serviceПроверьте статус:
sudo systemctl status tomcat.service
При успешном запуске статус должен быть active (running).
7. Доступ к веб-интерфейсу Tomcat
По умолчанию Tomcat слушает порт 8080. Проверьте это:
sudo ss -tunelp | grep 8080
Откройте в браузере:
http://localhost:8080/
Для доступа к manager-приложению используйте имя пользователя и пароль, указанные в conf/tomcat-users.xml.

Если браузер не показывает UI, проверьте журналы:
sudo journalctl -u tomcat.service -n 200
sudo tail -n 200 /opt/tomcat/logs/catalina.out8. Безопасность и рекомендации по жёсткому конфигурированию
Важно обеспечить минимально возможную атаку по поверхности. Основные шаги:
- Не запускать Tomcat как root. Используйте отдельного пользователя tomcat.
- Закрыть доступ к manager/host-manager по IP и/или дополнительно защитить reverse proxy (Nginx) базовой аутентификацией и TLS.
- Блокировать неиспользуемые порты firewall (ufw):
sudo ufw allow ssh
sudo ufw allow 8080/tcp # временно, пока не настроен reverse proxy
sudo ufw enable- Настроить SSL через reverse proxy (Nginx/Apache HTTPD) и отключить прямой доступ к порту 8080 со стороны интернета.
- Регулярно обновлять JDK и Tomcat до поддерживаемых версий.
- Ограничить права файловой системы: конфигурация и секреты доступны только tomcat и админам.
- Отключить ненужные приложеня webapps (пример: examples, docs) в продакшне.
Пример обратного прокси (Nginx) — схема:
- Nginx принимает запросы на 443, выполняет TLS и базовую аутентификацию.
- Nginx проксирует запросы к локальному Tomcat на 127.0.0.1:8080.
Без reverse proxy TLS на Tomcat возможен, но сложнее в поддержке и автоматизации.
9. Альтернативные подходы к установке
- Установка из пакетов репозитория: в Ubuntu 20.04 доступен tomcat9 в apt. Для простых задач это быстрее, но версия может отличаться от Tomcat 10.
sudo apt install tomcat9 -yКонтейнеризация: запуск Tomcat в Docker-контейнере даёт изоляцию и упрощает деплой. Официальные образы доступны на Docker Hub (apache/tomcat).
Управляемые облачные решения: если вы не хотите управлять ОС и обновлениями, используйте платформы PaaS, которые предоставляют контейнеры приложений Java.
Когда не использовать ручную установку: если нужна быстрая изоляция и масштабирование — контейнеры или оркестраторы (Kubernetes) предпочтительнее.
10. Отладка: runbook при типичных проблемах
Симптом: Tomcat не запускается (service inactive/failed)
- Действия:
- Просмотрите журнал systemd: sudo journalctl -u tomcat.service -n 200
- Проверьте catalina.out: sudo tail -n 200 /opt/tomcat/logs/catalina.out
- Убедитесь, что JAVA_HOME указывает на существующий JDK.
- Проверьте права на /opt/tomcat — файлы должны принадлежать tomcat:tomcat.
Симптом: Пустая страница или 404 на /manager
- Убедитесь, что в conf/tomcat-users.xml есть пользователь с ролями manager-gui и admin-gui.
- Проверьте context.xml в manager и host-manager — возможно, IP не разрешён.
Симптом: Порт 8080 занят
- Найдите процесс: sudo ss -tunelp | grep 8080
- Остановите процесс или измените порт в conf/server.xml.
Симптом: Ошибки ClassNotFound при деплое приложения
- Убедитесь, что приложение собрано для совместимой версии JDK и использует корректный classpath.
- Проверьте, нет ли конфликтующих библиотек в /opt/tomcat/lib и WEB-INF/lib.
Критерии для восстановления после изменений в конфигурации:
sudo systemctl daemon-reload
sudo systemctl restart tomcat.service
sudo systemctl status tomcat.service11. Роль‑ориентированные чеклисты
Системный администратор:
- Установить JDK и Tomcat.
- Создать системного пользователя tomcat.
- Настроить systemd unit и автозапуск.
- Оградить доступ firewall.
DevOps-инженер:
- Интегрировать деплой приложений (CI/CD), настроить артефакты .war.
- Настроить мониторинг и логи (Prometheus, ELK, Grafana).
- Настроить контейнеризацию/образ для окружений.
Разработчик:
- Проверить совместимость JDK и версий зависимостей.
- Убедиться, что приложение корректно деплоится в manager или через скрипт.
12. Критерии приёмки
Система считается корректно установленной, если выполняются все пункты:
- Tomcat запускается как systemd-сервис и в статусе active (running).
- Порт 8080 прослушивается и на http://localhost:8080/ доступна стартовая страница.
- Пользователь для manager может войти и увидеть manager GUI.
- Логи не содержат критических ошибок при старте.
- Доступ к manager ограничен согласно политике безопасности.
13. Короткое объявление для команды (100–200 слов)
Мы развернули Apache Tomcat 10 на Ubuntu 20.04. Установлен JDK, настроен непривилегированный пользователь tomcat и systemd unit для автоматического запуска. Менеджер приложений доступен по учетной записи, указанной в conf/tomcat-users.xml; доступ к manager и host-manager ограничен по IP в context.xml. В целях безопасности рекомендую настроить обратный прокси (Nginx) с TLS и вынести порт 8080 из внешнего доступа. Если вы планируете регулярный деплой приложений, настройте CI/CD для загрузки .war в /opt/tomcat/webapps и автоматического перезапуска сервиса. Для вопросов по доступу или логам обращайтесь к ответственному администратору.
Дополнительные советы и замечания
- Версии: если вы читаете руководство позже, замените 10.0.18 в командах на актуальную версию Tomcat. Использование некорректного номера приведёт к ошибке при скачивании.
- Логи важны: /opt/tomcat/logs и journalctl — первые источники информации при проблемах.
- Резервное копирование: сохраняйте копии конфигурации перед изменениями.
Факты (коротко):
- Порт по умолчанию: 8080
- Требуемая версия JDK: 8 или выше
- Пример целевой папки: /usr/share/apache-tomcat или /opt/tomcat
Важно
- Не оставляйте manager и host-manager открытыми для всего интернета. Это частая причина взломов и утечек.
Итог
Вы успешно установили и настроили Apache Tomcat 10 на Ubuntu 20.04. Следуйте чеклистам роли и рекомендациям по безопасности. Для развёртывания в продакшн рассмотрите настройку reverse proxy, TLS и интеграцию с системой мониторинга.
Сводка ключевых команд (шпаргалка):
sudo apt update
sudo apt install default-jdk -y
wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.0.18/bin/apache-tomcat-10.0.18.tar.gz
sudo tar xzvf apache-tomcat-10*tar.gz -C /opt/tomcat --strip-components=1
sudo groupadd --system tomcat
sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat
sudo chown -R tomcat:tomcat /opt/tomcat/
sudo chmod -R u+x /opt/tomcat/bin
sudo systemctl daemon-reload
sudo systemctl start tomcat.service
sudo systemctl enable tomcat.serviceСпасибо за внимание. Если нужно, могу подготовить автоматизированный сценарий (bash) для полной установки и базовой настройки на чистой Ubuntu 20.04.