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

Установка Apache Tomcat 10 на Debian 10

• 7 min read • DevOps • Обновлено 24 Nov 2025
Apache Tomcat 10 на Debian 10 — установка и настройка
Apache Tomcat 10 на Debian 10 — установка и настройка

Введение

Фон: логотип Apache Tomcat на сервере

Apache Tomcat — популярный open‑source сервер приложений для запуска Java‑веб-приложений. Он реализует Java Servlet, JavaServer Pages (JSP), Java EL и предоставляет среду выполнения для Java-кода. Tomcat лёгкий, гибкий, хорошо документирован и относительно зрелый.

В этом руководстве описано, как установить Apache Tomcat 10 на Debian 10 и выполнить базовую настройку, включая запуск как systemd‑сервис и конфигурацию Nginx как обратного прокси.

Что потребуется

  • Сервер с Debian 10.
  • Доменное имя, указывающее на IP сервера (рекомендуется для SSL).
  • Доступ root или пользователь с правами sudo.

Шаг 0 — обновите систему

Перед началом обновите индекс пакетов:

apt-get update -y

После этого убедитесь, что установка пакетов проходит без ошибок.

Установка Java

Tomcat — Java‑приложение, поэтому требуется JDK. Установим default JDK:

apt-get install default-jdk -y

Проверьте версию Java:

java --version

Пример вывода (на вашем сервере он может отличаться):

openjdk 11.0.11 2021-04-20
OpenJDK Runtime Environment (build 11.0.11+9-post-Debian-1deb10u1)
OpenJDK 64-Bit Server VM (build 11.0.11+9-post-Debian-1deb10u1, mixed mode, sharing)

Если Java установлена и версия 11 или выше — можно переходить дальше.

Установка Apache Tomcat

На момент оригинального руководства использовалась версия Tomcat 10.0.7. Проверьте актуальную версию на официальном сайте Apache Tomcat и при необходимости замените ссылки.

  1. Создайте системного пользователя для Tomcat:
useradd -m -d /opt/tomcat -U -s /bin/false tomcat
  1. Скачайте дистрибутив (пример для v10.0.7):
wget https://mirrors.estointernet.in/apache/tomcat/tomcat-10/v10.0.7/bin/apache-tomcat-10.0.7.tar.gz
  1. Распакуйте в /opt/tomcat:
tar -xzvf apache-tomcat-10.0.7.tar.gz -C /opt/tomcat --strip-components=1
  1. Назначьте владельца каталога tomcat:
chown -R tomcat:tomcat /opt/tomcat/

Теперь Tomcat установлены в /opt/tomcat и принадлежат пользователю tomcat.

Создание веб‑администратора Tomcat

Чтобы использовать веб‑интерфейсы Manager и Host Manager, создайте пользователя в файле tomcat‑users.xml:

nano /opt/tomcat/conf/tomcat-users.xml

Добавьте перед закрывающим тегом строки (примеры логина/пароля обязательно поменяйте на более надёжные):





Сохраните и закройте файл.

Важно: хранение учётных записей в открытом виде небезопасно. Для продакшена используйте защищённые пароли и ограничьте доступ через сеть/SSL.

Разрешение удалённого доступа к менеджерам Tomcat

По умолчанию Manager и Host Manager ограничены локальными адресами. Чтобы разрешить доступ извне, отредактируйте файлы контекста.

Редактирование Manager:

nano /opt/tomcat/webapps/manager/META-INF/context.xml

Найдите и удалите либо закомментируйте Valve, ограничивающий адреса:

  

Тоже самое для Host Manager:

nano /opt/tomcat/webapps/host-manager/META-INF/context.xml

Удалите соответствующий Valve. После изменений Manager и Host Manager будут доступны с любых адресов — пока не будут применены сетевые правила.

Важно: лучше не открывать менеджеры в публичный доступ. Используйте VPN, брандмауэр или ограничьте IP‑диапазоны.

Создание systemd‑unit для Tomcat

Создайте юнит-файл systemd, чтобы управлять Tomcat через systemctl:

nano /etc/systemd/system/tomcat.service

Вставьте содержимое:

[Unit]
Description=Tomcat
After=network.target

[Service]
Type=forking

User=tomcat
Group=tomcat

Environment="JAVA_HOME=/usr/lib/jvm/java-1.11.0-openjdk-amd64"
Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom"
Environment="CATALINA_BASE=/opt/tomcat"
Environment="CATALINA_HOME=/opt/tomcat"
Environment="CATALINA_PID=/opt/tomcat/temp/tomcat.pid"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"

ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh

[Install]
WantedBy=multi-user.target

Сохраните и примените изменения:

systemctl daemon-reload
systemctl start tomcat
systemctl enable tomcat

Проверка статуса:

systemctl status tomcat

Пример вывода:

? tomcat.service - Tomcat
   Loaded: loaded (/etc/systemd/system/tomcat.service; disabled; vendor preset: enabled)
   Active: active (running) since Thu 2021-07-01 04:58:39 UTC; 15s ago
  Process: 5706 ExecStart=/opt/tomcat/bin/startup.sh (code=exited, status=0/SUCCESS)
 Main PID: 5713 (java)
    Tasks: 29 (limit: 2359)
   Memory: 154.7M
   CGroup: /system.slice/tomcat.service
           ??5713 /usr/lib/jvm/java-1.11.0-openjdk-amd64/bin/java -Djava.util.logging.config.file=/opt/tomcat/conf/logging.properties -Djava.ut

Jul 01 04:58:39 tomcat systemd[1]: Starting Tomcat...
Jul 01 04:58:39 tomcat startup.sh[5706]: Tomcat started.
Jul 01 04:58:39 tomcat systemd[1]: Started Tomcat.

Порт по умолчанию — 8080. Проверить, слушает ли Tomcat:

ss -antpl | grep 8080

Пример:

LISTEN   0        100                          *:8080                  *:*       users:(("java",pid=5713,fd=43))

Настройка Nginx как обратного прокси

Рекомендуется использовать Nginx перед Tomcat для обработки HTTPS, статики и балансировки.

  1. Установите Nginx:
apt-get install nginx -y
  1. Создайте конфигурацию виртуального хоста:
nano /etc/nginx/conf.d/tomcat.conf

Пример конфига:

server {
  listen 80;

  server_name    tomcat.example.com;
  access_log /var/log/nginx/access.log;
  error_log /var/log/nginx/error.log;

  location / {
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://127.0.0.1:8080/;
  }
}

Проверьте синтаксис и перезапустите:

nginx -t
systemctl restart nginx
systemctl status nginx

Примечание: для продакшена используйте HTTPS (Let’s Encrypt), настройку заголовков безопасности и ограничение методов.

Доступ к приложению Tomcat

Откройте в браузере URL http://tomcat.example.com и перейдите к разделу Manage App.

Главная страница Apache Tomcat со ссылкой к менеджеру приложений

После клика вы увидите страницу логина менеджера:

Страница входа менеджера Tomcat

Войдите, используя учётные данные, заданные в tomcat-users.xml. После входа вы попадёте в панель Manager App:

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

Host Manager доступен с главной страницы Tomcat:

Страница входа Host Manager Tomcat

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

Безопасность и жёсткая настройка

Важно укрепить установку перед публичным использованием.

  • Ограничьте доступ к Manager/Host Manager по IP через Nginx или брандмауэр.
  • Всегда используйте HTTPS. Настройте сертификаты (Let’s Encrypt) и перенаправление 80->443.
  • Не используйте простые пароли в tomcat-users.xml. Подумайте о внешней аутентификации (LDAP, SSO).
  • Запускайте Tomcat под непривилегированным пользователем (tomcat) — уже выполнено.
  • Отключите ненужные примеры и демонстрационные веб-приложения в /opt/tomcat/webapps.
  • Регулярно обновляйте Tomcat и Java и следите за CVE.
  • Настройте логирование и ротацию логов (logrotate) для /opt/tomcat/logs.

Короткая методология обновлений:

  1. Тестируйте новые версии на стенде.
  2. Снимайте резервные копии конфигураций /opt/tomcat и веб‑приложений.
  3. Обновляйте Java/Tomcat в окне обслуживания.
  4. Прогоняйте автоматические тесты и мониторьте метрики после обновления.

Брандмауэр и сетевые правила

На Debian можно использовать ufw или iptables. Пример с ufw:

ufw allow OpenSSH
ufw allow 80
ufw allow 443
# Если напрямую нужен доступ к 8080 только с localhost, не открывайте порт 8080 наружу.
ufw enable

Резервное копирование и восстановление

  • Резервируйте каталоги: /opt/tomcat/conf, /opt/tomcat/webapps, и все данные приложений.
  • Регулярные бекапы можно хранить удалённо (S3/rsync).
  • При восстановлении восстановите права владельцев: chown -R tomcat:tomcat /opt/tomcat

Тесты и критерии приёмки

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

  • Tomcat запускается как systemd‑сервис: systemctl status tomcat → active (running).
  • Порт 8080 прослушивается локально: ss -antpl | grep 8080.
  • Nginx успешно проксирует запросы: curl -I http://tomcat.example.com → 200/302.
  • Доступ к Manager/Host Manager возможен по заданным пользователям и только через защищённый канал (HTTPS/VPN).

Минимальные тесты (acceptance):

  • Развернуть простое WAR‑приложение через Manager и загрузить страницу приложения.
  • Проверить доступность статических ресурсов через Nginx.
  • Имитировать перезапуск сервиса: systemctl restart tomcat и убедиться, что приложения снова доступны.

Инцидентный план и откат

Если после обновления Tomcat приложение перестало работать:

  1. Откатите изменения конфигурации (восстановите backup /opt/tomcat/conf).
  2. Перезапустите сервис: systemctl restart tomcat.
  3. Просмотрите логи: tail -n 200 /opt/tomcat/logs/catalina.out и /opt/tomcat/logs/localhost.*
  4. Если проблема связана с Java, верните предыдущую версию JDK.
  5. При необходимости переключитесь на трафик на запасной сервер (DNS/балансировщик).

Чек-листы по ролям

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

  • Установить Java и Tomcat.
  • Настроить systemd юнит и backups.
  • Настроить брандмауэр и HTTPS.

Разработчик:

  • Подготовить WAR и протестировать локально.
  • Проверить совместимость с версией сервера Servlet/JSP (Tomcat 10 использует Jakarta namespace).

Оператор (DevOps):

  • Настроить мониторинг (CPU, память, Heap, GC).
  • Настроить ротацию логов и алёрты на ошибки.

Совместимость и миграция (Tomcat 9 → Tomcat 10)

Tomcat 10 перешёл на пространство имён Jakarta EE (javax. → jakarta.). При миграции приложений учтите:

  • Зависимости и импорты в коде, библиотеках и web.xml могут требовать замены.
  • Если приложение использует старые javax API, лучше либо оставаться на Tomcat 9, либо выполнить миграцию к Jakarta.
  • Тестируйте приложения в изолированной среде перед переключением продакшена.

Отладка и распространённые проблемы

  • Проблема: Tomcat не стартует. Действия:

    • Просмотрите catalina.out на ошибки ClassNotFound или конфигурации.
    • Проверьте права в /opt/tomcat — процесс должен иметь доступ к нужным файлам.
  • Проблема: 502 Bad Gateway от Nginx. Действия:

    • Проверьте, слушает ли Tomcat 127.0.0.1:8080.
    • Убедитесь, что proxy_pass указывает на правильный адрес и порт.
  • Проблема: Ошибки деплоя WAR через Manager. Действия:

    • Убедитесь, что у пользователя есть роль manager-gui.
    • Посмотрите логи на предмет исключений при развертывании.

Таблица сравнения быстрых команд

  • Установка Java: apt-get install default-jdk -y
  • Создание пользователя tomcat: useradd -m -d /opt/tomcat -U -s /bin/false tomcat
  • Распаковка Tomcat: tar -xzvf apache-tomcat-10.0.7.tar.gz -C /opt/tomcat –strip-components=1
  • Перезапуск Tomcat: systemctl restart tomcat
  • Проверка порта: ss -antpl | grep 8080

Полезные советы и рекомендации

  • Для публичного доступа всегда используйте HTTPS и HSTS.
  • Минимизируйте количество запущенных веб‑приложений в Tomcat, если сервер отвечает за несколько проектов используйте контейнеризацию/изолированные инстансы.
  • Мониторьте Java heap и GC, чтобы избежать OutOfMemoryError.

Заключение

Поздравляем — вы установили и настроили Apache Tomcat 10 на Debian 10, настроили unit для systemd и при необходимости Nginx как обратный прокси. Дальше рекомендуется выполнить жёсткую настройку безопасности, автоматизировать бэкапы и добавить мониторинг.

Важно: проверяйте совместимость ваших приложений с Tomcat 10 (особенно переходы javax → jakarta) и храните резервные копии перед обновлениями.

Краткое резюме ниже.

Фактбокс

  • Директория установки: /opt/tomcat
  • Пользователь: tomcat
  • Порт по умолчанию: 8080
  • Systemd unit: /etc/systemd/system/tomcat.service

Короткое объявление для команды (100–200 слов)

Установлен Apache Tomcat 10 на Debian 10. Tomcat запущен под отдельным пользователем tomcat и управляется через systemd. Для доступа настроен Nginx как обратный прокси, что позволяет легко добавить HTTPS и ограничить доступ. Перед выкатом в продакшен обязательно выполнить проверку совместимости приложений с Jakarta EE и настроить ограничения доступа к менеджерам Tomcat.

Итог

  • Tomcat успешно установлен и запущен.
  • Подготовлены рекомендации по безопасности и откату.
  • Добавлены тесты принятия и чек-листы для ролей.

Если нужны конкретные примеры конфигураций (HTTPS с Let’s Encrypt, systemd с ограничениями ресурсов, или сценарии миграции приложений с javax → jakarta) — напишите, и я подготовлю пошаговые инструкции.

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