Установка Apache Tomcat 10 на Debian 10
Введение

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 и при необходимости замените ссылки.
- Создайте системного пользователя для Tomcat:
useradd -m -d /opt/tomcat -U -s /bin/false tomcat- Скачайте дистрибутив (пример для v10.0.7):
wget https://mirrors.estointernet.in/apache/tomcat/tomcat-10/v10.0.7/bin/apache-tomcat-10.0.7.tar.gz- Распакуйте в /opt/tomcat:
tar -xzvf apache-tomcat-10.0.7.tar.gz -C /opt/tomcat --strip-components=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, статики и балансировки.
- Установите Nginx:
apt-get install nginx -y- Создайте конфигурацию виртуального хоста:
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.

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

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

Host Manager доступен с главной страницы 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.
Короткая методология обновлений:
- Тестируйте новые версии на стенде.
- Снимайте резервные копии конфигураций /opt/tomcat и веб‑приложений.
- Обновляйте Java/Tomcat в окне обслуживания.
- Прогоняйте автоматические тесты и мониторьте метрики после обновления.
Брандмауэр и сетевые правила
На 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 приложение перестало работать:
- Откатите изменения конфигурации (восстановите backup /opt/tomcat/conf).
- Перезапустите сервис: systemctl restart tomcat.
- Просмотрите логи: tail -n 200 /opt/tomcat/logs/catalina.out и /opt/tomcat/logs/localhost.*
- Если проблема связана с Java, верните предыдущую версию JDK.
- При необходимости переключитесь на трафик на запасной сервер (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) — напишите, и я подготовлю пошаговые инструкции.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента