Sé que mi respuesta se superpone con alguna de las otras respuestas, pero esta es una solución completa que tiene algunas ventajas. Esto funciona en Tomcat 8:
- La aplicación principal se sirve desde la raíz
- Se mantiene el despliegue de archivos de guerra a través de la interfaz web.
- La aplicación principal se ejecutará en el puerto 80, mientras que solo los administradores tienen acceso a las carpetas de administración (me doy cuenta de que los sistemas * nix requieren superusuario para vincularse a 80, pero en Windows esto no es un problema).
Esto significa que solo tiene que reiniciar el tomcat una vez, y después de que los archivos de guerra actualizados se puedan implementar sin problemas.
Paso 1: en el archivo server.xml, busque la entrada del conector y reemplácela con:
<Connector
port="8080"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector
port="80"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
Paso 2: definir contextos dentro de la <Host ...>
etiqueta:
<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>
Tenga en cuenta que me dirigí a todas las aplicaciones en la carpeta webapp. El primero cambia efectivamente la raíz y la aplicación principal desde la posición. ROOT ahora está activado http://example.com/ROOT
y la aplicación principal está activada http://example.com/
. Las aplicaciones web que están protegidas con contraseña requieren el privileged="true"
atributo
Cuando implementa un archivo CAS.war que coincide con la raíz ( <Context path="/" docBase="CAS">
debe volver a cargarlo en el panel de administración, ya que no se actualiza con la implementación.
No incluya el <Context path="/CAS" docBase="CAS">
en sus contextos ya que deshabilita la opción del administrador para desplegar archivos de guerra. Esto significa que puede acceder a la aplicación de dos maneras: http://example.com/
yhttp://example.com/APP/
Paso 3: para evitar el acceso no deseado a la carpeta raíz y de administrador, agregue una valve
a esas etiquetas de contexto como esta:
<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>
Esto esencialmente limita el acceso a la carpeta de la aplicación web de administración a las personas de mi propio dominio (dirección IP falsa) y localhost cuando usan el puerto predeterminado 8080 y mantiene la capacidad de implementar dinámicamente los archivos war a través de la interfaz web.
Si desea usar esto para múltiples aplicaciones que usan diferentes direcciones IP, puede agregar la dirección IP al conector ( address="143.21.2.1"
).
Si desea ejecutar múltiples aplicaciones web desde la raíz, puede duplicar la etiqueta de Servicio (use un nombre diferente para el segundo) y cambiar la base de documentos de <Context path="/" docBase="CAS">
a, por ejemplo <Context path="/" docBase="ICR">
.