CATALINA_HOME vs. CATALINA_BASE

11

No puedo encontrar una respuesta definitiva a por qué Ubuntu establecería la CATALINA_BASEvariable de entorno, haciéndola diferente CATALINA_HOME. Encontré este documento que sugiere que no establecerlo CATALINA_BASElo haría equivalente a CATALINA_HOME. Ese documento también sugiere que la configuración CATALINA_BASEse realizaría para hacer que varias instancias estén disponibles.

Sin embargo, parece que no puedo encontrar nada que explique esto. Presumiblemente, correr con un solo CATALINA_HOMEha sido bueno durante mucho tiempo, pero Ubuntu cambió.

He encontrado esta pregunta con una respuesta iluminadora en AskUbuntu pero no hay mucho más específicamente en CATALINA_HOMEcontra CATALINA_BASE. Esa pregunta alude al parámetro "appBase", que está documentado en la documentación de Tomcat6 para el contenedor Host en el archivo de configuración.

Aquí están las preguntas: ¿Por qué están separadas estas dos variables? ¿Cuándo deberían separarse? ¿Qué le permite hacer esto al administrador? ¿Qué coloca luego en cada directorio? ¿Cuándo deberían ser iguales estas dos variables? ¿Qué recomienda ASF para la práctica estándar?

Mei
fuente
Similar: askubuntu.com/q/43226/256002
Basil Bourque

Respuestas:

12

¿Por qué están separadas estas dos variables?

catalina.home apunta a la ubicación de la información común.
catalina.base apunta al directorio donde se encuentra toda la información específica de la instancia .

Entonces tiene 1 hogar y puede tener más de 1 base.

¿Cuándo deberían separarse? ¿Cuándo deberían ser iguales estas dos variables?

Si tiene 1 tomcat, puede establecerlos en el mismo valor, pero una buena práctica le sugerirá que planifique con anticipación y los mantenga separados: nunca sabe si necesita más de un tomcat. Ubuntu comenzó a seguir esta forma de pensar debido a que es más lógico: hace que sea más fácil ejecutar 2 o más tomcats, pero no deshabilita la ejecución de 1 tomcat donde establecer ambos en el mismo valor requeriría que todos editen el valor base. Tiene más sentido mantenerlos diferentes.

¿Qué le permite hacer esto al administrador?

Permita que se ejecute más de 1 tomcat al mismo tiempo, donde cada instancia de tomcat puede tener sus propias aplicaciones.

¿Qué coloca luego en cada directorio?

El hogar contiene los binairy.
La base contiene conf, logs, webapps, work y temp. 1 por cada instancia de tomcat.

Rinzwind
fuente
4

CATALINA_HOME vs CATALINA_BASE

Si está ejecutando varias instancias, entonces necesita ambas variables, de lo contrario solo CATALINA_HOME.

En otras palabras: CATALINA_HOMEes obligatorio y CATALINA_BASEes opcional.

CATALINA_HOME representa la raíz de su instalación de Tomcat.

Opcionalmente, Tomcat se puede configurar para varias instancias definiendo $CATALINA_BASEpara cada instancia. Si no se configuran varias instancias, $CATALINA_BASEes lo mismo que $CATALINA_HOME.

Ver: Apache Tomcat 7 - Introducción

Se ejecuta por separado CATALINA_HOMEy CATALINA_BASEse documenta en RUNNING.txt que dice:

Las variables de entorno CATALINA_HOMEy CATALINA_BASEse utilizan para especificar la ubicación de Apache Tomcat y la ubicación de su configuración activa, respectivamente.

No puede configurar CATALINA_HOMEy CATALINA_BASEvariables en el setenvscript, porque se utilizan para encontrar ese archivo.

Por ejemplo:

(4.1) Tomcat se puede iniciar ejecutando uno de los siguientes comandos:

  %CATALINA_HOME%\bin\startup.bat         (Windows)

  $CATALINA_HOME/bin/startup.sh           (Unix)

o

  %CATALINA_HOME%\bin\catalina.bat start  (Windows)

  $CATALINA_HOME/bin/catalina.sh start    (Unix)

Múltiples instancias de Tomcat

En muchas circunstancias, es deseable tener una sola copia de una distribución binaria de Tomcat compartida entre varios usuarios en el mismo servidor. Para que esto sea posible, puede establecer la CATALINA_BASE variable de entorno en el directorio que contiene los archivos para su instancia de Tomcat 'personal'.

Cuando se ejecuta con un archivo separado CATALINA_HOMEy CATALINA_BASE, los archivos y directorios se dividen de la siguiente manera:

En CATALINA_BASE:

  • bin - Solo: setenv.sh (* nix) o setenv.bat (Windows), tomcat-juli.jar
  • conf - Archivos de configuración del servidor (incluido server.xml)
  • lib - Bibliotecas y clases, como se explica a continuación.
  • logs - Archivos de registro y salida
  • webapps - Aplicaciones web cargadas automáticamente
  • work - Directorios de trabajo temporales para aplicaciones web.
  • temp - Directorio utilizado por la JVM para archivos temporales>

En CATALINA_HOME:

  • bin - Scripts de inicio y apagado
  • lib - Bibliotecas y clases, como se explica a continuación.
  • endorsed- Bibliotecas que anulan los "Estándares Endosados" estándar. Por defecto está ausente.

Como revisar

La forma más fácil de verificar cuál es tu CATALINA_BASEy CATALINA_HOMEes ejecutando startup.sh, por ejemplo:

$ /usr/share/tomcat7/bin/startup.sh
Using CATALINA_BASE:   /usr/share/tomcat7
Using CATALINA_HOME:   /usr/share/tomcat7

También puede verificar dónde están instalados los archivos Tomcat, mediante la dpkgherramienta que se muestra a continuación (Debian / Ubuntu):

dpkg -L tomcat7-common
kenorb
fuente
3

Además de ser la mejor manera de ejecutar dos instancias de tomcat, facilita la actualización.

Estoy usando esta configuración.

<!-- language: bash -->

/opt/apache-tomcat-7.0-32
/opt/apache-tomcat-7.0.39
/opt/apache-tomcat-7       (simbolic link to apache-tomcat-7.0.32)

CATALINA_HOME = / opt / apache-tomcat-7

/srv/user_deploys/tomcat_product_a
/srv/user_deploys/tomcat_product_b

CATALINA_BASE apunta a uno u otro directorio de implementación.

Los archivos binarios básicos y las bibliotecas están en /opt/Solo copie server.xml, web.xml(y algunos otros archivos, lea los documentos, por favor) y cree directorios bin, logs, webapps, temp, work (RTLM, L como lovelly, por favor)

Puede actualizar los archivos binarios de tomcat modificando CATALINA_HOMEel archivo $ CATALINA_BASE / bin / setenv.sh para cada instancia o simplemente puede modificar el enlace simbólico, actualizando los archivos binarios "globalmente"

Es más fácil actualizar incluso si solo tiene una instancia.

dario el aburrido
fuente