tomcat - Variables CATALINA_BASE y CATALINA_HOME

97

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_HOMEy CATALINA_BASE.

En mi instalación de Tomcat, he configurado CATALINA_HOMEpara apuntar a una carpeta "común" (por ejemplo /tomcat6) y la CATALINA_BASEvariable 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 uno CATALINA_HOMEy eliminarlo CATALINA_BASE(o viceversa)?
souser
fuente
3
La pregunta en sí es realmente una respuesta.
Koray Tugay
4
La razón por la que necesita hacer esto es para separar el mantenimiento del software Tomcat (que reside en $CATALINA_HOME) del mantenimiento de la configuración y el contenido de la instancia de Tomcat (que viven en $CATALINA_BASE).
reinierpost

Respuestas:

106

Si está ejecutando varias instancias de Tomcat en un solo host, debe establecer CATALINA_BASEque sea igual al directorio .../tomcat_instance1o .../tomcat_instance2según corresponda para cada instancia y la CATALINA_HOMEvariable de entorno a la instalación común de Tomcat cuyos archivos se compartirán entre las dos instancias.

El CATALINA_BASEentorno es opcional si está ejecutando una sola instancia de Tomcat en el host y, CATALINA_HOMEen ese caso, lo hará de forma predeterminada . Si está ejecutando varias instancias como está, debe proporcionarse.

Hay una descripción bastante buena de esta configuración en el RUNNING.txtarchivo en la raíz de la distribución de Apache Tomcat bajo el título Configuración avanzada - Varias instancias de Tomcat

Russ
fuente
1
Su segundo párrafo es incorrecto cuando usa Tomcat empaquetado en Ubuntu. Separa correctamente el software Tomcat (en $ CATALINA_HOME) de la instancia de Tomcat (en $ CATALINA_BASE).
reinierpost
84

CATALINA_HOME vs CATALINA_BASE

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

En otras palabras: CATALINA_HOMEes obligatorio y CATALINA_BASEopcional.

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

Opcionalmente, Tomcat se puede configurar para múltiples 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 con separado CATALINA_HOMEy CATALINA_BASEestá documentado 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 variables CATALINA_HOMEy CATALINA_BASEen 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)

Varias instancias de Tomcat

En muchas circunstancias, es deseable tener una única 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 CATALINA_HOMEy separado 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 cierre
  • lib - Bibliotecas y clases, como se explica a continuación
  • endorsed- Bibliotecas que anulan los "Estándares aprobados" estándar. Por defecto está ausente.

Como revisar

La forma más sencilla de comprobar 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
8
Esta es una respuesta mucho mejor que la aceptada. Muy bien explicado.
dkanejs
Explique por favor cómo iniciar múltiples instancias de tomcat con diferentes CATALINA_BASE.
Marcos
CATALINA_BASE y CATALINA_HOME deben configurarse como variables del sistema: Windows: configure CATALINA_BASE = ruta
Marque el
11

No puedo decir que conozca las mejores prácticas, 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 en particular que dependa de ellos, es probable que pueda dejarlos en paz.

catalina.shestablece las variables que Tomcat necesita para trabajar de forma inmediata. También dice que CATALINA_BASEes 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 sabrá si su configuración funciona o no cuando inicie su servidor.

Lauri Lehtinen
fuente
¿Puede establecer la catalina_homeruta en el \bin\catalina.sharchivo para ambas instancias de tomcat?
Giri
8

Apuntar CATALINA_BASEa un directorio diferente de le CATALINA_HOMEpermite 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 múltiples instancias de Tomcat en paralelo sin duplicar los binarios.

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

Actualización 2018

Hay una forma más fácil de configurar CATALINA_BASE ahora con la makebaseutilidad. He publicado un tutorial que cubre este tema en http://blog.rasia.io/blog/how-to-easily-setup-lucee-in-tomcat.html junto con un video tutorial en https://youtu.be / nuugoG5c-7M

La respuesta original continúa a continuación

Para aprovechar esta función, simplemente cree el directorio de configuración y apúntelo con la CATALINA_BASEvariable de entorno. Tendrá que poner algunos archivos en ese directorio:

  • Copie el confdirectorio del directorio de instalación original de Tomcat, incluido su contenido, y asegúrese de que Tomcat tenga permisos de lectura. Edite los archivos de configuración según sus necesidades.
  • Cree un logsdirectorio si conf/logging.propertiesapunta ${catalina.base}/logsy asegúrese de que Tomcat tenga permisos de lectura / escritura.
  • Cree un tempdirectorio si no está anulando el predeterminado al $CATALINA_TMPDIRque apunta ${CATALINA_BASE}/tempy asegúrese de que Tomcat tenga permisos de escritura en él.
  • Cree un workdirectorio predeterminado ${CATALINA_BASE}/worky asegúrese de que Tomcat tenga permisos de escritura.
isapir
fuente
1

CATALINA_BASE es opcional.

Sin embargo, en los siguientes escenarios, es útil configurar CATALINA_BASE que es independiente de CATALINA_HOME.

  1. Cuando se ejecutan más de 1 instancias 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 se necesita algún parche o actualización de la versión, solo se requieren 1 cambios de instalación o deben ser probados / verificados / firmados.
  2. Separación de preocupaciones (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 aplicación web (carpeta de aplicaciones web), configuración del entorno (directorio conf), directorio logs / temp / work
Amit Kaneria
fuente
-5

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_BASEes lo mismo que CATALINA_HOME.

Gurú
fuente
2
Su respuesta es engañosa ... la respuesta correcta debe indicar Si no se configuran varias instancias , $ CATALINA_BASE es lo mismo que $ CATALINA_HOME. 'Según la documentación
Eddie B
1
CATALINA_BASE es igual a CATALINA_HOME solo cuando ejecuta la instancia raíz. Cuando tenga varias instancias, será diferente.
splatch
1
Diría que CATALINA_BASE y CATALINA HOME deberían ser diferentes incluso si solo tiene una instancia. De esa manera, su contenido está separado de su instalación. Por ejemplo, CATALINA_HOME en / usr / share / tomcat y CATALINA_BASE en / var / lib / tomcat
user1725779
No. Puede ser el mismo, pero puede no ser el mismo, para múltiples instancias.
Andrey Regentov