So che la mia risposta è una sorta di sovrapposizione con alcune delle altre risposte, ma questa è una soluzione completa che presenta alcuni vantaggi. Questo funziona su Tomcat 8:
- L'applicazione principale è servita dalla radice
- Viene mantenuta la distribuzione di file di guerra tramite l'interfaccia Web.
- L'applicazione principale verrà eseguita sulla porta 80 mentre solo gli amministratori hanno accesso alle cartelle di gestione (mi rendo conto che i sistemi * nix richiedono un superutente per l'associazione a 80, ma su Windows non è un problema).
Ciò significa che è necessario riavviare Tomcat una sola volta e dopo che i file di guerra aggiornati possono essere distribuiti senza problemi.
Passaggio 1: nel file server.xml, trova la voce del connettore e sostituiscila con:
<Connector
port="8080"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector
port="80"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
Passaggio 2: definire i contesti all'interno del <Host ...>
tag:
<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>
Nota che ho indirizzato tutte le app nella cartella webapp. Il primo passa efficacemente dalla posizione alla radice e all'app principale. ROOT è ora attivo http://example.com/ROOT
e l'applicazione principale è attiva http://example.com/
. Le webapp protette da password richiedono l' privileged="true"
attributo.
Quando si distribuisce un file CAS.war che corrisponde alla radice ( <Context path="/" docBase="CAS">
è necessario ricaricare quello nel pannello di amministrazione poiché non si aggiorna con la distribuzione.
Non includere il <Context path="/CAS" docBase="CAS">
nei tuoi contesti in quanto disabilita l'opzione manager per distribuire file di guerra. Ciò significa che puoi accedere all'app in due modi: http://example.com/
ehttp://example.com/APP/
Passaggio 3: per impedire l'accesso indesiderato alla cartella principale e di gestione, aggiungere un valve
a quei tag di contesto come questo:
<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>
Ciò limita essenzialmente l'accesso alla cartella dell'app Web dell'amministratore alle persone del mio dominio (indirizzo IP falso) e localhost quando usano la porta predefinita 8080 e mantiene la possibilità di distribuire dinamicamente i file di guerra attraverso l'interfaccia web.
Se si desidera utilizzarlo per più app che utilizzano indirizzi IP diversi, è possibile aggiungere l'indirizzo IP al connettore ( address="143.21.2.1"
).
Se si desidera eseguire più app Web dalla radice, è possibile duplicare il numero di servizio (utilizzare un nome diverso per il secondo) e modificare, <Context path="/" docBase="CAS">
ad esempio, la base di dati di <Context path="/" docBase="ICR">
.