Я знаю, что мой ответ частично совпадает с другим ответом, но это полное решение, которое имеет некоторые преимущества.Это работает на Tomcat 8:
- Основное приложение обслуживается из корня
- Развертывание военных файлов через веб-интерфейс поддерживается.
- Основное приложениебудет работать на порту 80, в то время как только администраторы имеют доступ к папкам управления (я понимаю, что * системам nix требуется суперпользователь для привязки к 80, но в Windows это не проблема).
Это означает, чтовам нужно только один раз перезапустить tomcat, и после обновления можно без проблем развернуть обновленные файлы war.
Шаг 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"
).
Если вы хотите запустить несколькоПри загрузке веб-приложений из корня вы можете продублировать тег Service (используйте другое имя для второго) и изменить базу данных <Context path="/" docBase="CAS">
, например, <Context path="/" docBase="ICR">
.
.