Установка Apache Tomcat 10 на Ubuntu 20.04
TL;DR
Tomcat — это контейнер сервлетов для запуска Java-веб‑приложений. В статье показано, как установить JDK, скачать Tomcat 10, настроить пользователя, права, systemd‑сервис и получить доступ к веб‑интерфейсу на Ubuntu 20.04. Следуйте шагам последовательно и проверьте состояние службы после каждого изменения.
Введение

Apache Tomcat (Tomcat Server) — это свободный HTTP‑сервер и контейнер сервлетов для запуска Java‑приложений. Tomcat поддерживает JSP, WebSocket, Java Servlet, Java EL и обеспечивает полностью Java‑ориентированное окружение для веб‑приложений. Проект поддерживает сообщество разработчиков под управлением Apache Software Foundation. Tomcat кросс‑платформенный и работает под Linux и Windows. Эта инструкция описывает установку Apache Tomcat 10 на Ubuntu 20.04.
Важно: в руководстве использованы примеры для версии 10.0.18. Если вы читаете эту инструкцию позже, обновите ссылку на архив с актуальной версией Tomcat.
Что нужно перед началом
- Ubuntu 20.04 с доступом sudo. Рекомендуется создать отдельного пользователя для запуска Tomcat.
- Свежая установка пакетов: sudo apt update.
- Понимание основных команд systemd (start, enable, status).
1. Установка Java (JDK)
Tomcat запускает Java‑код и требует JDK версии 8 или выше. На Ubuntu проще всего установить пакет default‑jdk.
В терминале выполните:
sudo apt update
sudo apt install default-jdk -yФлаг -y автоматически подтверждает установку. Проверьте версию Java:
java -versionОжидайте вывод, похожий на OpenJDK 11.x или выше. Если у вас другая версия JDK, убедитесь в её совместимости с выбранной версией Tomcat.
2. Скачивание и распаковка Apache Tomcat 10
Скачивайте Tomcat с официального зеркала Apache. Пример для v10.0.18:
wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.0.18/bin/apache-tomcat-10.0.18.tar.gzЕсли версия изменилась, замените номер релиза в URL. Затем распакуйте архив:
tar xvf apache-tomcat-10.0.18.tar.gzПеренесите распакованную папку в системную директорию. В примере используется /usr/share/apache-tomcat:
sudo mv apache-tomcat-10.0.18 /usr/share/apache-tomcatАльтернативный однострочный способ распаковки и перемещения (замените /opt/tomcat на желаемую директорию):
sudo tar xzvf apache-tomcat-10*tar.gz -C /opt/tomcat --strip-components=1Совет по размещению: /opt или /usr/share — стандартные места для сторонних сервисов. Выберите удобное для вас.
3. Создание пользователя Tomcat и права доступа
Для безопасности запуск сервера выполняйте от отдельного системного пользователя.
Создайте пользователя и группу tomcat (если ещё не созданы):
sudo groupadd --system tomcat
sudo useradd -s /bin/false -g tomcat --system tomcatОтредактируйте файл пользователей Tomcat, чтобы дать доступ менеджера и host‑manager. Откройте конфигурацию:
sudo nano /opt/tomcat/conf/tomcat-users.xmlВставьте или измените блок с ролями и пользователями. Пример (замените admin и пароль на свои значения):
Затем установите владельца и права на каталоги Tomcat:
sudo chown -R tomcat:tomcat /opt/tomcat/
sudo chmod -R u+x /opt/tomcat/binВажно: не используйте слабые пароли для менеджеров. В продакшне доступ к manager/host‑manager обычно ограничивают по IP и/или закрывают для публичного доступа.
4. Разрешение доступа к manager и host-manager
По умолчанию веб‑приложения manager и host‑manager ограничивают доступ к локальному хосту. Отредактируйте их context.xml, чтобы добавить разрешенные IP или удалить ограничение (не рекомендуется).
Откройте файлы:
sudo nano /opt/tomcat/webapps/manager/META-INF/context.xml
sudo nano /opt/tomcat/webapps/host-manager/META-INF/context.xmlНайдите блок Valve и корректируйте allow. Пример добавления адреса 10.0.2.15:
Примечание: используйте корректные регулярные выражения и экранирование. Альтернативно ограничьте доступ через брандмауэр (UFW) или обратный прокси (nginx) перед Tomcat.
5. Создание systemd‑сервиса для Tomcat
Чтобы управлять Tomcat через systemctl, создайте unit‑файл.
Откройте редактор:
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-reload
sudo systemctl start tomcat.service
sudo systemctl enable tomcat.serviceПроверьте статус:
sudo systemctl status tomcat.serviceДолжно отображаться active (running). Если служба не запускается, проверьте логи в /usr/share/apache-tomcat/logs.
6. Доступ к веб‑интерфейсу Tomcat
Tomcat по умолчанию слушает порт 8080. Проверьте, что порт занят Tomcat:
sudo ss -tunelp | grep 8080Откройте в браузере:
http://localhost:8080/Для входа используйте имя и пароль, указанные в tomcat-users.xml:
Если доступ не работает, перезапустите службу и просмотрите логи:
sudo systemctl restart tomcat.service
sudo journalctl -u tomcat.service --no-pager | tail -n 200
sudo tail -n 200 /usr/share/apache-tomcat/logs/catalina.outПрактические советы и безопасность
- Не открывайте manager/host‑manager в публичный доступ. Используйте VPN, SSH‑туннель или обратный прокси с IP‑фильтрацией.
- Настройте TLS через обратный прокси (nginx или Apache httpd) перед Tomcat. Tomcat может работать с TLS напрямую, но обычно SSL терминируют на прокси.
- Обновляйте JDK и Tomcat по мере выхода исправлений безопасности.
- Разрешайте только необходимые роли и минимизируйте права у пользователя tomcat.
Отладка и распространённые ошибки
- Сервис не запускается: проверьте права на каталоги, наличие JAVA_HOME и лог фалы (/logs/catalina.out).
- Порт 8080 занят: измените конфигурацию Connector в server.xml или освободите порт.
- Ошибка доступа к manager: проверьте tomcat-users.xml и allow в context.xml.
Дополнительная ценность — подборка руководств, чеклистов и сниппетов
Быстрый чеклист инженера (через 10 минут)
- Установлен JDK (java -version).
- Перемещён Tomcat в /opt или /usr/share.
- Создан пользователь tomcat и заданы права.
- Настроен tomcat.service и включён в systemd.
- Проверен статус службы и доступ через порт 8080.
- Ограничен доступ к manager/host‑manager.
Мини‑методология развертывания в продакшн
- Подготовьте отдельный сервер или контейнер.
- Установите и зафиксируйте версию JDK.
- Разверните Tomcat в /opt/tomcat и настроьте user/tomcat.
- Настройте systemd и мониторинг (Prometheus/Alertmanager или стандартный мониторинг хостинга).
- Настройте обратный прокси с TLS.
- Протестируйте деплой и сценарии отката.
Фрагмент systemd‑unit (шпаргалка)
[Unit]
Description=Tomcat
After=network.target
[Service]
Type=forking
User=tomcat
Environment=JAVA_HOME=/usr/lib/jvm/default-java
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
[Install]
WantedBy=multi-user.targetКороткая галерея причин падения и решения
- Запуск от root: нежелательно — используйте системного пользователя.
- Неверные права: исправьте chown/chmod.
- Неправильный JAVA_HOME: укажите реальный путь до JDK.
Совместимость и миграция
- Tomcat 10 использует спецификацию Jakarta EE (пакет javax → jakarta). При миграции приложений обратите внимание на импорты и зависимости. Многие приложения, собранные под Tomcat 9 (javax), потребуют изменений для Tomcat 10.
- Если приложение не совместимо с Jakarta API, предпочитайте Tomcat 9 или адаптируйте приложение.
Критерии приёмки
- Tomcat сервис активен: sudo systemctl status tomcat.service показывает active (running).
- По адресу http://localhost:8080/ загружается приветственная страница Tomcat.
- Доступ к manager защищён и работает с заданными учётными данными.
Заключение
Вы установили Apache Tomcat 10 на Ubuntu 20.04: установили JDK, скачали и развернули архив Tomcat, создали системного пользователя, настроили права, разрешили доступ к manager и завели systemd‑сервис. Для продакшна дополнительно настройте TLS через обратный прокси, ограничьте доступ к административным приложениям и регулярно обновляйте компоненты.
Важно: при обновлении Tomcat проверяйте изменения API (Jakarta EE) и меняйте приложение при необходимости.
Быстрые ссылки и команды (шпаргалка)
- Обновление пакетов: sudo apt update
- Установка JDK: sudo apt install default-jdk -y
- Проверка Java: java -version
- Скачивание Tomcat: 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
- Перемещение: sudo mv apache-tomcat-10.0.18 /usr/share/apache-tomcat
- Права: sudo chown -R tomcat:tomcat /opt/tomcat/ && sudo chmod -R u+x /opt/tomcat/bin
- systemd: sudo systemctl daemon-reload && sudo systemctl start tomcat.service && sudo systemctl enable tomcat.service
- Логи: sudo journalctl -u tomcat.service –no-pager
Спасибо за внимание. Если нужно, могу подготовить инструкцию с настройкой Nginx в качестве обратного прокси с TLS и примером конфигурации для автоматического деплоя WAR‑файлов.
Похожие материалы
Гибернация в Windows 11: включение и советы
Отключение автоматических обновлений в Google Play
Включить ярлыки специальных папок в Пуск Windows 11
Windows 11 самопроизвольно перезагружается — как исправить
Включить systemd в WSL — пошагово и советы