java tomcat environment-variables

java - variables tomcat-CATALINA_BASE y CATALINA_HOME



environment-variables (6)

Tengo varias instancias de tomcat 6 ejecutándose en el mismo servidor (Linux) y funciona como se esperaba. Estoy tratando de averiguar cuál es la práctica estándar con respecto a la configuración de las variables CATALINA_HOME y CATALINA_BASE .

En mi instalación de tomcat, configuré CATALINA_HOME para que apunte a una carpeta "común" (por ejemplo /tomcat6 ) y la variable CATALINA_BASE varía según el nombre de la instancia (por ejemplo /tomcat_instance1 , /tomcat_instance2 )

Mi pregunta es esta:

  • ¿Realmente necesito dos variables?
  • ¿O puedo simplemente tener un CATALINA_HOME y eliminar CATALINA_BASE (o viceversa)?

CATALINA_HOME vs CATALINA_BASE

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

En otras palabras: se requiere CATALINA_BASE y CATALINA_BASE es opcional.

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

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

Ver: Apache Tomcat 7 - Introducción

La ejecución con CATALINA_HOME y CATALINA_BASE separado está documentada en RUNNING.txt, que dice:

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

No puede configurar las variables CATALINA_HOME y CATALINA_BASE en el script setenv , porque se usan 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 Tomcat compartida entre múltiples usuarios en el mismo servidor. Para que esto sea posible, puede establecer la variable de entorno CATALINA_BASE en el directorio que contiene los archivos para su instancia de Tomcat ''personal''.

Cuando se ejecuta con CATALINA_HOME y CATALINA_BASE separado, 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 temporales de trabajo para aplicaciones web
  • temp - Directorio utilizado por la JVM para archivos temporales>

En CATALINA_HOME :

  • bin - Guiones de inicio y cierre
  • lib - Bibliotecas y clases, como se explica a continuación
  • endorsed - Bibliotecas que anulan los estándares estándar endosados. Por defecto está ausente.

Como revisar

La forma más fácil de comprobar cuál es tu CATALINA_BASE y CATALINA_HOME es 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 herramienta dpkg como se muestra a continuación (Debian / Ubuntu):

dpkg -L tomcat7-common


CATALINA_BASE es opcional.

Sin embargo, en los siguientes escenarios, ayuda a configurar CATALINA_BASE que está separado de CATALINA_HOME.

  1. Cuando se ejecutan más de 1 instancia de tomcat en el mismo host

    • Esto ayuda a tener solo 1 tiempo de ejecución de la instalación de tomcat, con múltiples configuraciones de servidor CATALINA_BASE ejecutándose en puertos separados.
    • Si es necesario realizar alguna modificación, o actualización de la versión, solo se requieren 1 cambios de instalación, o deben ser probados / verificados / cancelados.
  2. Separación de preocupación (responsabilidad única)

    • El tiempo de ejecución de Tomcat es estándar y no cambia durante cada proceso de lanzamiento. es decir, binarios de Tomcat
    • El proceso de lanzamiento puede agregar más cosas como webapplication (carpeta webapps), configuración del entorno (directorio conf), directorio de registros / temp / work

Esa es la carpeta principal de bin que contiene el archivo tomcat.exe:

CATALINA_HOME=''C:/Program Files/Apache Software Foundation/Tomcat 6.0''

CATALINA_BASE es lo mismo que CATALINA_HOME .


No puedo decir que conozco la mejor práctica, pero esta es mi perspectiva.

¿ Estás usando estas variables para algo?

Personalmente, no he necesitado cambiar ni en Linux ni en Windows en entornos que varían desde el desarrollo hasta la producción. A menos que esté haciendo algo particular que dependa de ellos, lo más probable es que los deje en paz.

catalina.sh establece las variables que Tomcat necesita para trabajar de forma predeterminada. También dice que CATALINA_BASE es opcional:

# CATALINA_HOME May point at your Catalina "build" directory. # # CATALINA_BASE (Optional) Base directory for resolving dynamic portions # of a Catalina installation. If not present, resolves to # the same directory that CATALINA_HOME points to.

Estoy bastante seguro de que descubrirás si tu configuración funciona o no cuando inicies tu servidor.


Señalar CATALINA_BASE a un directorio diferente de CATALINA_HOME permite separar el directorio de configuración del directorio de binarios.

De forma predeterminada, CATALINA_BASE (configuraciones) y CATALINA_HOME (binarios) apuntan a la misma carpeta, pero separar las configuraciones de los binarios puede ayudarlo a ejecutar varias instancias de Tomcat una al lado de la otra sin duplicar los binarios.

También es útil cuando quiere actualizar los binarios, sin modificar, o necesita hacer una copia de seguridad / restaurar sus archivos de configuración para Tomcat.

Para aprovechar esta función, simplemente cree el directorio config y CATALINA_BASE con la variable de entorno CATALINA_BASE . Deberá poner algunos archivos en ese directorio:

  • Copie el directorio conf directorio de instalación original de Tomcat, incluidos sus contenidos, y asegúrese de que Tomcat le haya leído los permisos. Edite los archivos de configuración según sus necesidades.
  • Cree un directorio de logs si conf/logging.properties apunta a ${catalina.base}/logs , y asegúrese de que Tomcat tenga permisos de lectura / escritura en él.
  • Cree un directorio temp si no anula el valor predeterminado de $CATALINA_TMPDIR que apunta a ${CATALINA_BASE}/temp , y asegúrese de que Tomcat tenga permisos de escritura en él.
  • Cree un directorio de work que tenga como ${CATALINA_BASE}/work predeterminado ${CATALINA_BASE}/work , y asegúrese de que Tomcat tenga permisos de escritura en él.

Si está ejecutando varias instancias de Tomcat en un único host, debe configurar CATALINA_BASE para que sea igual al directorio .../tomcat_instance1 o .../tomcat_instance2 según corresponda para cada instancia y la variable de entorno CATALINA_HOME a la instalación común de Tomcat cuyos archivos será compartido entre las dos instancias.

El entorno CATALINA_BASE es opcional si está ejecutando una sola instancia de Tomcat en el host y de forma predeterminada será CATALINA_HOME en ese caso. Si está ejecutando varias instancias como es, debería proporcionarse.

Hay una descripción bastante buena de esta configuración en el archivo RUNNING.txt en la raíz de la distribución de Apache Tomcat bajo el encabezado Configuración avanzada - Múltiples instancias de Tomcat