Je sais que ma réponse recoupe en quelque sorte certaines des autres réponses, mais c'est une solution complète qui présente certains avantages. Cela fonctionne sur Tomcat 8:
- L'application principale est servie depuis la racine
- Le déploiement des fichiers war via l'interface Web est maintenu.
- L'application principale fonctionnera sur le port 80 tandis que seuls les administrateurs ont accès aux dossiers de gestion (je me rends compte que les systèmes * nix nécessitent un superutilisateur pour la liaison à 80, mais sous Windows, ce n'est pas un problème).
Cela signifie que vous ne devez redémarrer le tomcat qu'une seule fois, et après la mise à jour, les fichiers war peuvent être déployés sans problème.
Étape 1: Dans le fichier server.xml, recherchez l'entrée de connecteur et remplacez-la par:
<Connector
port="8080"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector
port="80"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
Étape 2: Définissez les contextes dans la <Host ...>
balise:
<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>
Notez que j'ai adressé toutes les applications dans le dossier webapp. Le premier fait basculer efficacement la racine et l'application principale de la position. ROOT est maintenant activé http://example.com/ROOT
et l'application principale est activée http://example.com/
. Les applications Web protégées par mot de passe nécessitent l' privileged="true"
attribut.
Lorsque vous déployez un fichier CAS.war qui correspond à la racine ( <Context path="/" docBase="CAS">
vous devez recharger celui-ci dans le panneau d'administration car il ne s'actualise pas avec le déploiement.
N'incluez pas le <Context path="/CAS" docBase="CAS">
dans vos contextes car cela désactive l'option du gestionnaire pour déployer les fichiers war. Cela signifie que vous pouvez accéder à l'application de deux manières: http://example.com/
ethttp://example.com/APP/
Étape 3: Afin d'empêcher tout accès indésirable au dossier racine et gestionnaire, ajoutez un valve
à ces balises de contexte comme ceci:
<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>
Cela limite essentiellement l'accès au dossier de l'application Web d'administration aux personnes de mon propre domaine (fausse adresse IP) et de l'hôte local lorsqu'ils utilisent le port par défaut 8080 et maintient la possibilité de déployer dynamiquement les fichiers de guerre via l'interface Web.
Si vous souhaitez l'utiliser pour plusieurs applications utilisant des adresses IP différentes, vous pouvez ajouter l'adresse IP au connecteur ( address="143.21.2.1"
).
Si vous souhaitez exécuter plusieurs applications Web à partir de la racine, vous pouvez dupliquer la balise de service (utiliser un nom différent pour la seconde) et modifier la docbase de la <Context path="/" docBase="CAS">
par exemple <Context path="/" docBase="ICR">
.