Я знаю, що моя відповідь є свого роду перекриттям з деякою іншою відповіддю, але це повне рішення, яке має деякі переваги. Це працює на 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. Щоб запобігти небажаному доступу до папки root та менеджера, додайте 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"
).
Якщо ви хочете запустити кілька веб - додатків від кореня, ви можете дублювати Службова (використовувати інше ім'я для другого) і змінити docbase з <Context path="/" docBase="CAS">
до, наприклад <Context path="/" docBase="ICR">
.