Wiem, że moja odpowiedź w pewnym sensie pokrywa się z niektórymi innymi odpowiedziami, ale jest to kompletne rozwiązanie, które ma pewne zalety. Działa to na Tomcat 8:
- Główna aplikacja jest obsługiwana z katalogu głównego
- Utrzymywane jest rozmieszczanie plików wojennych za pośrednictwem interfejsu internetowego.
- Główna aplikacja będzie działać na porcie 80, podczas gdy tylko administratorzy mają dostęp do folderów zarządzania (zdaję sobie sprawę, że systemy * nix wymagają superużytkownika do powiązania z 80, ale w systemie Windows nie stanowi to problemu).
Oznacza to, że wystarczy raz ponownie uruchomić tomcat, a po zaktualizowanej wojnie pliki można wdrożyć bez problemu.
Krok 1: w pliku server.xml znajdź wpis łącznika i zamień go na:
<Connector
port="8080"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector
port="80"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
Krok 2: Zdefiniuj konteksty w <Host ...>
tagu:
<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>
Zwróć uwagę, że odniosłem się do wszystkich aplikacji w folderze aplikacji internetowych. Pierwsza skutecznie przełączy root i główną aplikację z pozycji. ROOT jest teraz włączony http://example.com/ROOT
i główna aplikacja jest włączona http://example.com/
. Aplikacje internetowe chronione hasłem wymagają privileged="true"
atrybutu.
Podczas wdrażania pliku CAS.war, który pasuje do katalogu głównego ( <Context path="/" docBase="CAS">
musisz go ponownie załadować w panelu administracyjnym, ponieważ nie jest on odświeżany podczas wdrażania.
Nie uwzględniaj <Context path="/CAS" docBase="CAS">
w swoich kontekstach, ponieważ wyłącza ona opcję menedżera do rozmieszczania plików wojennych. Oznacza to, że możesz uzyskać dostęp do aplikacji na dwa sposoby: http://example.com/
ihttp://example.com/APP/
Krok 3: Aby zapobiec niepożądanemu dostępowi do folderu głównego i menedżera, dodaj valve
do tych tagów kontekstowych w następujący sposób:
<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>
Zasadniczo ogranicza to dostęp do folderu aplikacji internetowej administratora do osób z mojej własnej domeny (fałszywy adres IP) i lokalnego hosta, gdy używają domyślnego portu 8080 i zachowuje możliwość dynamicznego wdrażania plików wojennych za pośrednictwem interfejsu internetowego.
Jeśli chcesz używać tego dla wielu aplikacji, które używają różnych adresów IP, możesz dodać adres IP do łącznika ( address="143.21.2.1"
).
Jeśli chcesz uruchamiać wiele aplikacji internetowych z katalogu głównego, możesz zduplikować tag Service (użyj innej nazwy dla drugiej) i zmienić na przykład bazę <Context path="/" docBase="CAS">
danych na <Context path="/" docBase="ICR">
.