Ich weiß, dass sich meine Antwort mit einigen der anderen Antworten überschneidet, aber dies ist eine vollständige Lösung, die einige Vorteile hat. Dies funktioniert unter Tomcat 8:
- Die Hauptanwendung wird von der Wurzel aus bedient
- Die Bereitstellung von Kriegsdateien über die Weboberfläche wird beibehalten.
- Die Hauptanwendung wird auf Port 80 ausgeführt, während nur die Administratoren Zugriff auf die Verwaltungsordner haben (mir ist klar, dass * nix-Systeme einen Superuser zum Binden an 80 benötigen, aber unter Windows ist dies kein Problem).
Dies bedeutet, dass Sie den Tomcat nur einmal neu starten müssen und nach aktualisierten Kriegsdateien problemlos bereitgestellt werden können.
Schritt 1: Suchen Sie in der Datei server.xml den Connector-Eintrag und ersetzen Sie ihn durch:
<Connector
port="8080"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector
port="80"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
Schritt 2: Definieren Sie Kontexte innerhalb des <Host ...>
Tags:
<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>
Beachten Sie, dass ich alle Apps im Webapp-Ordner adressiert habe. Der erste schaltet effektiv die Root- und die Haupt-App aus der Position. ROOT ist jetzt eingeschaltet http://example.com/ROOT
und die Hauptanwendung ist eingeschaltet http://example.com/
. Die passwortgeschützten Webanwendungen erfordern das privileged="true"
Attribut.
Wenn Sie eine CAS.war-Datei bereitstellen, die mit dem Stammverzeichnis übereinstimmt ( <Context path="/" docBase="CAS">
Sie müssen diese im Admin-Bereich neu laden, da sie bei der Bereitstellung nicht aktualisiert wird.
Nehmen Sie das nicht <Context path="/CAS" docBase="CAS">
in Ihre Kontexte auf, da es die Manager-Option zum Bereitstellen von Kriegsdateien deaktiviert. Dies bedeutet, dass Sie auf zwei Arten auf die App zugreifen können: http://example.com/
undhttp://example.com/APP/
Schritt 3: Um unerwünschten Zugriff auf den Stamm- und Managerordner zu verhindern, fügen Sie valve
diesen Kontext-Tags Folgendes hinzu:
<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>
Dies beschränkt den Zugriff auf den Administrator-Web-App-Ordner im Wesentlichen auf Personen aus meiner eigenen Domain (gefälschte IP-Adresse) und localhost, wenn sie den Standardport 8080 verwenden, und behält die Möglichkeit bei, die War-Dateien dynamisch über die Webschnittstelle bereitzustellen.
Wenn Sie dies für mehrere Apps verwenden möchten, die unterschiedliche IP-Adressen verwenden, können Sie die IP-Adresse zum Connector hinzufügen ( address="143.21.2.1"
).
Wenn Sie mehr Web - Anwendungen von der Wurzel ausführen möchten, können Sie die Service - Tag - Duplikat (einen anderen Namen für die zweiten verwenden) und die Docbase der Änderung <Context path="/" docBase="CAS">
zu zum Beispiel <Context path="/" docBase="ICR">
.