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 eliminarCATALINA_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
yCATALINA_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
yCATALINA_BASE
en el scriptsetenv
, 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
yCATALINA_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.jarconf
- Archivos de configuración del servidor (incluido server.xml)lib
- Bibliotecas y clases, como se explica a continuaciónlogs
: archivos de registro y salidawebapps
- Aplicaciones web cargadas automáticamentework
- Directorios temporales de trabajo para aplicaciones webtemp
- Directorio utilizado por la JVM para archivos temporales>En
CATALINA_HOME
:
bin
- Guiones de inicio y cierrelib
- Bibliotecas y clases, como se explica a continuaciónendorsed
- 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.
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.
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
siconf/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