У меня есть военный файл моего приложения. Мне нужно развернуть это на корневом уровне. Текущий URL http://localhost:8080/war_name/application_name
.
Развертывание моего приложения в корневом каталоге Tomcat
Ответ 1
У вас есть несколько вариантов:
-
Извлеките готовый каталог
ROOT/
из tomcat и переименуйте файл войны вROOT.war
перед его развертыванием. -
Разверните свою войну как (из вашего примера)
war_name.war
и настройте корневой контекст вconf/server.xml
, чтобы использовать свою войну файл:<Context path="" docBase="war_name" debug="0" reloadable="true"></Context>
Первый легче, но немного больше. Второй, вероятно, более элегантный способ сделать это.
Ответ 2
на tomcat v.7 (установка ванили)
в файле conf/server.xml добавьте следующий бит в конец файла перед тегом </Host>
:
<Context path="" docBase="app_name">
<!-- Default set of monitored resources -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
Обратите внимание, что атрибут docBase. Это важный бит. Вы либо убедитесь, что вы развернули имя приложения до того, как вы изменили корневое веб-приложение, или просто скопируйте распакованный webapp (имя приложения) в свою папку tomapat webapps. Запуск, посещение root, см. Ваше имя приложения!
Ответ 3
В tomcat 7 с этими изменениями я могу получить доступ к myAPP at/и ROOT at/ROOT
<Context path="" docBase="myAPP">
<!-- Default set of monitored resources -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
<Context path="ROOT" docBase="ROOT">
<!-- Default set of monitored resources -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
Добавьте выше в раздел <Host>
в файле server.xml
Ответ 4
Я знаю, что мой ответ похож на какой-то другой ответ, но это полное решение, имеющее некоторые преимущества. Это работает на Tomcat 8:
- Основное приложение подается из корневого каталога
- Развертывание военных файлов через веб-интерфейс поддерживается.
- Основное приложение будет работать на порту 80, а только администраторы имеют доступ к папкам управления (я понимаю, что * nix-системы требуют суперпользователя для привязки к 80, но в Windows это не проблема).
Это означает, что вам нужно только перезапустить tomcat один раз, и после того, как обновленные военные файлы могут быть развернуты без проблем.
Шаг 1: В файле server.xml найдите запись коннектора и замените ее на:
<Connector
port="8080"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector
port="80"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
Шаг 2:
Определите контексты в теге <Host ...>
:
<Context path="/" docBase="CAS">
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
<Context path="/ROOT" docBase="ROOT">
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
<Context path="/manager" docBase="manager" privileged="true">
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
<Context path="/host-manager" docBase="host-manager" privileged="true">
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
Обратите внимание, что я обращался ко всем приложениям в папке webapp. Первый из них эффективно переключает корень и основное приложение с позиции. ROOT теперь находится на http://example.com/ROOT
, а основное приложение - на http://example.com/
. Для Webapps, защищенных паролем, требуется атрибут privileged="true"
.
При развертывании файла CAS.war, который соответствует корневому (<Context path="/" docBase="CAS">
, вам необходимо перезагрузить его на панели администратора, поскольку он не обновляется при развертывании.
Не включайте <Context path="/CAS" docBase="CAS">
в свои контексты, поскольку он отключает опцию менеджера для развертывания военных файлов. Это означает, что вы можете получить доступ к приложению двумя способами: http://example.com/
и http://example.com/APP/
Шаг 3:
Чтобы предотвратить нежелательный доступ к папке с корнем и менеджером, добавьте valve
к этим контекстным тегам следующим образом:
<Context path="/manager" docBase="manager" privileged="true">
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
addConnectorPort="true"
allow="143\.21\.2\.\d+;8080|127\.0\.0\.1;8080|::1;8080|0:0:0:0:0:0:0:1;8080"/>
</Context>
Это существенно ограничивает доступ к папке веб-приложения администратора для людей из моего собственного домена (поддельный IP-адрес) и localhost, когда они используют порт по умолчанию 8080 и поддерживает возможность динамического развертывания военных файлов через веб-интерфейс.
Если вы хотите использовать это для нескольких приложений, использующих разные IP-адреса, вы можете добавить IP-адрес к разъему (address="143.21.2.1"
).
Если вы хотите запустить несколько веб-приложений из корня, вы можете дублировать тег Service (используйте другое имя для второго) и изменить docbase <Context path="/" docBase="CAS">
на <Context path="/" docBase="ICR">
.
Ответ 5
Удалите $CATALINA_HOME/webapps/ROOT
. Обновите $CATALINA_HOME/conf/server.xml
, убедитесь, что элемент Host выглядит следующим образом:
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="false" deployOnStartup="false">
<Context path="" docBase="myApp"></Context>
Он работает с Tomcat 8. autoDeploy и deployOnStartup необходимо установить в значение false, чтобы предотвратить повторное развертывание tomcat myApp
.
Ответ 6
Самый быстрый способ.
-
Убедитесь, что у вас нет приложения ROOT, разверните его, если у вас есть
-
Переименуйте свою войну в ROOT.war, разверните, вот и все, никаких изменений конфигурации не требуется
Ответ 7
Добавляя к @Rob Hruska sol, этот параметр в разделе server.xml внутри работает:
<Context path="" docBase="gateway" reloadable="true" override="true"> </Context>
Примечание: в некоторых случаях может потребоваться переопределение = "true".
Ответ 8
**** Эта ссылка должна ответить на вопросы о развертывании веб-приложения в корне tomcat. ****
Ответ 9
URL открытого менеджера томатов: - http://localhost:8080/manager/html/
затемв приложениях вы видите приложение с путем, когда "/" развернуто
, просто отмените его.
Переименуйте файл войны вашего приложения в ROOT.war и просто укажите путь: -
C:\Program Files\Apache Software Foundation\Tomcat 8.5\webapps
Запустите Tomcat. Никаких дополнительных настроек не требуется.
Теперь мы можем видеть домашнюю страницу нашего приложения или настроенную ссылку на http://localhost:8080
Ответ 10
На моем сервере я использую это, и root autodeploy работает нормально:
<Host name="mysite" autoDeploy="true" appBase="webapps" unpackWARs="true" deployOnStartup="true">
<Alias>www.mysite.com</Alias>
<Valve className="org.apache.catalina.valves.RemoteIpValve" protocolHeader="X-Forwarded-Proto"/>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="mysite_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b"/>
<Context path="/mysite" docBase="mysite" reloadable="true"/>
</Host>