Я знаю, что мой ответ частично совпадает с некоторым другим ответом, но это полное решение, которое имеет некоторые преимущества. Это работает на 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/
. Для веб-приложений, защищенных паролем, требуется 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-адрес) и локального хоста, когда они используют порт по умолчанию 8080 и поддерживает возможность динамического развертывания файлов войны через веб-интерфейс.
Если вы хотите использовать это для нескольких приложений, использующих разные IP-адреса, вы можете добавить IP-адрес в соединитель ( address="143.21.2.1"
).
Если вы хотите запустить несколько веб-приложений из корневого каталога, вы можете продублировать тег службы (используйте другое имя для второго) и изменить базу документации, <Context path="/" docBase="CAS">
например, на <Context path="/" docBase="ICR">
.