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

Установка Tomcat 9 с Nginx на Debian 10

• 4 min read • DevOps • Обновлено 25 Nov 2025
Установка Tomcat 9 с Nginx на Debian 10
Установка Tomcat 9 с Nginx на Debian 10

Tomcat и Nginx на сервере

Короткое описание

Tomcat — лёгкий свободный сервер приложений для развёртывания Java‑приложений. Его можно использовать самостоятельно или за обратным прокси (например, Nginx). В этой инструкции — пошаговая установка Tomcat 9 и привязка через Nginx на Debian 10.

Требования

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

Начало работы

Перед установкой обновите кэш APT:

apt-get update -y

После обновления пакетов можно переходить к установке Java.

Установка Java

Tomcat запускает Java‑приложения — нужен JDK. Установите стандартный пакет:

apt-get install default-jdk -y

Проверьте установленную версию:

java --version

Ожидаемый пример вывода:

openjdk 11.0.9.1 2020-11-04
OpenJDK Runtime Environment (build 11.0.9.1+1-post-Debian-1deb10u2)
OpenJDK 64-Bit Server VM (build 11.0.9.1+1-post-Debian-1deb10u2, mixed mode, sharing)

Установка Tomcat

Создайте отдельного пользователя для сервера Tomcat:

useradd -m -U -d /opt/tomcat -s /bin/false tomcat

Скачайте архив Tomcat (пример с v9.0.45 — замените ссылку на актуальную версию при необходимости):

wget https://www-eu.apache.org/dist/tomcat/tomcat-9/v9.0.45/bin/apache-tomcat-9.0.45.tar.gz

Распакуйте архив:

tar -xvzf apache-tomcat-9.0.45.tar.gz

Переместите каталог в /opt/tomcat/tomcat:

mv apache-tomcat-9.0.45 /opt/tomcat/tomcat

Установите права и владельца:

chown -R tomcat:tomcat /opt/tomcat/tomcat  
chmod -R 755 /opt/tomcat/tomcat

Создание systemd‑сервиса для Tomcat

Создайте файл службы:

nano /etc/systemd/system/tomcat.service

Добавьте:

[Unit]
Description=Tomcat 9.0 servlet container
After=network.target

[Service]
Type=forking

User=tomcat
Group=tomcat

Environment="JAVA_HOME=/usr/lib/jvm/default-java"
Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom"

Environment="CATALINA_BASE=/opt/tomcat/tomcat"
Environment="CATALINA_HOME=/opt/tomcat/tomcat"
Environment="CATALINA_PID=/opt/tomcat/tomcat/temp/tomcat.pid"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"

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

[Install]
WantedBy=multi-user.target

Перезагрузите демона systemd:

systemctl daemon-reload

Запустите и включите автозапуск:

systemctl start tomcat  
systemctl enable tomcat

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

systemctl status tomcat

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

? tomcat.service - Tomcat 9.0 servlet container
   Loaded: loaded (/etc/systemd/system/tomcat.service; disabled; vendor preset: enabled)
   Active: active (running) since Wed 2021-04-14 05:41:21 UTC; 42s ago
  Process: 5784 ExecStart=/opt/tomcat/tomcat/bin/startup.sh (code=exited, status=0/SUCCESS)
 Main PID: 5791 (java)
    Tasks: 30 (limit: 4701)
   Memory: 159.1M
   CGroup: /system.slice/tomcat.service
           ??5791 /usr/lib/jvm/default-java/bin/java -Djava.util.logging.config.file=/opt/tomcat/tomcat/conf/logging.properties -Djava.util.log

Apr 14 05:41:21 debian systemd[1]: Starting Tomcat 9.0 servlet container...
Apr 14 05:41:21 debian startup.sh[5784]: Tomcat started.
Apr 14 05:41:21 debian systemd[1]: Started Tomcat 9.0 servlet container.

Настройка веб‑интерфейса Tomcat

Добавьте пользователя для доступа к веб‑интерфейсу Tomcat:

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

Найдите раздел пользователей и добавьте:

  
  
  

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

Для Manager:

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

Для Host Manager:

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

Удалите или закомментируйте строку, похожую на следующую (она ограничивает адреса):

  

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

systemctl restart tomcat

Важно: после открытия доступа убедитесь, что доступ защищён (см. раздел Безопасность).

Настройка Nginx для Tomcat

Установите Nginx:

apt-get install nginx -y

Создайте файл конфигурации виртуального хоста:

nano /etc/nginx/conf.d/tomcat.conf

Добавьте:

server {
  listen          80;
  server_name     tomcat.example.com;
  root            /opt/tomcat/tomcat/webapps/;


  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

Ожидаемый вывод:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Перезапустите Nginx:

systemctl restart nginx

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

systemctl status nginx

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

? nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2021-04-14 05:57:03 UTC; 1min 38s ago
     Docs: man:nginx(8)
  Process: 6852 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
  Process: 6853 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
 Main PID: 6854 (nginx)
    Tasks: 3 (limit: 4701)
   Memory: 4.0M
   CGroup: /system.slice/nginx.service
           ??6854 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
           ??6855 nginx: worker process
           ??6856 nginx: worker process

Apr 14 05:57:03 debian systemd[1]: Starting A high performance web server and a reverse proxy server...
Apr 14 05:57:03 debian systemd[1]: Started A high performance web server and a reverse proxy server.

Теперь Nginx проксирует запросы к Tomcat.

Доступ к веб‑интерфейсу Tomcat

Откройте в браузере http://tomcat.example.com

Интерфейс Apache Tomcat

Нажмите Manager App и введите учётные данные:

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

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

Панель Tomcat

Можно также открыть Host Manager:

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

Безопасность и повышение надёжности

  • Смените пароль пользователя tomcatadmin на надёжный.
  • Ограничьте доступ к Manager и Host Manager по IP или через аутентификацию на уровне Nginx.
  • Настройте HTTPS (Let\’s Encrypt) на уровне Nginx и отключите прямой доступ по 8080 извне.
  • Запустите Tomcat под непривилегированным пользователем (мы использовали tomcat).
  • В production‑среде настройте ротацию логов и мониторинг использования памяти (JVM options).

Когда этот способ не подходит

  • Если у вас уже есть Apache httpd с модулем AJP — может быть удобнее использовать AJP или mod_jk.
  • Для контейнеризированных развёртываний (Docker, Kubernetes) предпочтительнее использовать официальные контейнеры и orchestration‑паттерны.
  • Если требуется высокая доступность и балансировка — настройте кластер Tomcat или используйте балансировщик нагрузки перед Nginx.

Альтернативные подходы

  • Использовать Apache HTTPD с mod_proxy или mod_jk.
  • Развёртывание Tomcat внутри Docker с обратным прокси на уровне ingress.
  • Отказ от Nginx: настроить прямую SSL‑терминацию в Tomcat (менее гибко).

Мини‑методология установки

  1. Обновить систему: apt-get update -y.
  2. Установить JDK: apt-get install default-jdk -y.
  3. Создать пользователя tomcat.
  4. Скачать и распаковать Tomcat, переместить в /opt/tomcat/tomcat.
  5. Настроить права и systemd‑сервис.
  6. Настроить Nginx и включить HTTPS.
  7. Защитить Manager/Host Manager и сменить пароли.
  8. Тестировать доступ и мониторить.

Контрольный список ролей

  • Системный администратор:
    • Установить пакеты, создать пользователя, настроить сервисы systemd.
  • DevOps:
    • Интеграция с CI/CD, настройка контейнеров, мониторинга и логирования.
  • Разработчик:
    • Проверить развёрнутое WAR‑приложение, убедиться в корректности коннекторов.

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

  • Tomcat запущен и отвечает на локальном 8080:
  • Nginx отвечает на порт 80 и проксирует запросы:
  • Доступ в Manager разрешён только авторизованным пользователям.
  • Сервисы автоматически стартуют после перезагрузки.

Типичные ошибки и как их решать

  • Неправильные права на /opt/tomcat — проверьте chown и chmod.
  • systemd не стартует сервис — проверьте journalctl -u tomcat.
  • Nginx выдаёт 502 — проверьте, что Tomcat слушает 127.0.0.1:8080 и что proxy_pass указан корректно.
  • Пользователь не может войти в Manager — проверьте tomcat-users.xml и перезапустите Tomcat.

Резюме

Вы установили Tomcat 9 и настроили Nginx как обратный прокси на Debian 10. На продакшне обязательно настройте HTTPS, ограничьте доступ к административным приложениям и автоматизируйте развёртывание.

Важно: если у вас остались вопросы — опишите точную проблему и я помогу с диагностикой.

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