Развертывание приложения на корневом уровне в Tomcat
Быстрый ответ
Чтобы приложение было доступно в корневом каталоге сервера Tomcat, нужно просто переименовать .war файл в ROOT.war и разместить его в директории webapps/. Убедитесь, что директория ROOT/ отсутствует. После этого приложение станет доступно по адресу http://hostname:port/. Вот соответствующие команды:
mv your-app.war /path/to/tomcat/webapps/ROOT.war // # Переименовываем файл, это первый шаг
rm -rf /path/to/tomcat/webapps/ROOT/ // # Удаляем старую директорию ROOT
sh /path/to/tomcat/bin/startup.sh // # Запускаем сервер
Таким образом, ваше приложение будет корректно отображаться в корневой директории без необходимости дополнительной настройки контекста.

Подробнее: Детали и потенциальные проблемы
Настройка server.xml: Ваш управляющий инструмент
Для корректного настройки элемента <Context> в разделе <Host> файла server.xml необходима последовательность и внимание к деталям.
<Context path="" docBase="your-app-name" reloadable="true" /> // # Точная настройка, подобно работе дирижера
Для удобства управления элементом <Context> создайте отдельный файл your-app.xml в каталоге conf/Catalina/localhost/.
Несколько приложений? Не вопрос!
Если вам нужно развернуть несколько приложений в корневом каталоге с использованием разных портов или IP-адресов, просто создайте несколько тегов <Service> в server.xml и настройте для каждого из них индивидуальные <Connector>.
Безопасность: наше первоочередное забота!
Для обеспечения максимальной безопасности приложений добавьте privileged="true" в элемент <Context>, тогда Tomcat предоставит необходимый уровень защиты.
Управление развертыванием: по вашему усмотрению!
Предпочитаете полный контроль? Установите атрибуты autoDeploy и deployOnStartup в false в файле server.xml:
<Host name="localhost" appBase="webapps"
autoDeploy="false" deployOnStartup="false"> // # Полный контроль над процессом развертывания
Внимательно к деталям: предотвращайте ошибки!
Будьте внимательны при повторном развертывании. Всегда проверяйте дважды и учитывайте совместимость версии вашего приложения и Tomcat. Любые изменения в server.xml требуют перезапуска сервера.
Визуализация
Можно сравнить размещение приложения в корневом каталоге Tomcat с получением главного слота на крупном музыкальном фестивале:
Музыкальный фестиваль (🎵): [Группа 1🎤, Группа 2🎤, Группа 3🎤, ...]
Ваше приложение (🤘): [Хедлайнер🎙️]
Размещение app.war в ROOT подобно тому, как вашей группе предоставляется преимущественное право на выступление:
До: [🎵/app🎤, 🎵/other🎤]
После: [🎵/🎙️] // # Ваше приложение занимает главное место
Переименование файла .war в ROOT.war аналогично тому, как ваша группа выходит на главную сцену для исполнения.
Дополнительные настройки и глубокий анализ
Развертывание из распакованного архива: быстрая реакция на изменения
Во время разработки использование распакованных приложений позволяет немедленно видеть любые изменения, что упрощает процесс отладки.
WatchedResource: следим за изменениями
WatchedResource как бдительный помощник следит за обновлениями и перезагружает приложение при обнаружении изменений.
<Context ...>
<WatchedResource>WEB-INF/web.xml</WatchedResource> // # Ваш незаменимый помощник
</Context>
Особенности Tomcat 7
Будьте внимательны при работе с разными версиями Tomcat, особенно если используете Tomcat 7 или более старые версии.
Синтаксис и форматирование: корректность важна
Точность синтаксиса и форматирования настроек XML не менее важна, чем точность исполнения музыкальной композиции. Всегда проверяйте правильность написания XML после внесения каких-либо изменений.
Полезные материалы
- Apache Tomcat 9 (9.0.85) – Руководство по развертыванию веб-приложений — официальное руководство по развертыванию приложений в Tomcat.
- GitHub – apache/tomcat: Apache Tomcat — исходный код Tomcat из официального репозитория на GitHub.
- "Too many SQL variables" error in django with sqlite3 – Stack Overflow — обсуждение на Stack Overflow, содержащее потенциальное решение проблемы.
- YouTube – Развертывание WAR-файлов в Tomcat — в этом видеоуроке наглядно демонстрируется процесс развертывания приложений в Tomcat.


