CATALINA_HOME vs. CATALINA_BASE

11

Não consigo encontrar uma resposta definitiva para o porquê do Ubuntu definir a CATALINA_BASEvariável de ambiente, tornando-a diferente CATALINA_HOME. Encontrei este documento que sugere que a não configuração CATALINA_BASEseria equivalente a CATALINA_HOME. Esse documento também sugere que a configuração CATALINA_BASEseria feita para disponibilizar várias instâncias.

No entanto, parece que não consigo encontrar nada que explique isso. Presumivelmente, rodar com um single CATALINA_HOMEé bom há muito tempo, mas o Ubuntu mudou.

Eu encontrei esta pergunta com uma resposta esclarecedora sobre AskUbuntu mas não há muito especificamente sobre CATALINA_HOMEvs. CATALINA_BASE. Essa pergunta faz alusão ao parâmetro "appBase", que está documentado na documentação do Tomcat6 para o contêiner Host no arquivo de configuração.

Aqui estão as perguntas: Por que essas duas variáveis ​​são separadas? Quando eles devem ser separados? O que isso permite que o administrador faça? O que você coloca em cada diretório? Quando essas duas variáveis ​​devem ser as mesmas? O que a ASF recomenda para a prática padrão?

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

Respostas:

12

Por que essas duas variáveis ​​são separadas?

catalina.home aponta para a localização das informações comuns.
catalina.base aponta para o diretório em que todas as informações específicas da instância são mantidas.

Então você tem 1 casa e pode ter mais de 1 base.

Quando eles devem ser separados? Quando essas duas variáveis ​​devem ser as mesmas?

Se você possui 1 tomcat, pode defini-los com o mesmo valor, mas as boas práticas sugerem que você planeje com antecedência e mantenha-os separados: você nunca sabe se precisa de mais de um tomcat. O Ubuntu começou a seguir essa maneira de pensar por ser mais lógico: facilita a execução de 2 ou mais tomcats, mas não desativa a execução de 1 tomcat, onde a configuração dos dois com o mesmo valor exigiria que todos editassem o valor base. Faz mais sentido mantê-los diferentes.

O que isso permite que o administrador faça?

Permita que mais de 1 tomcat sejam executados ao mesmo tempo em que cada instância do tomcat pode ter seus próprios aplicativos.

O que você coloca em cada diretório?

Casa contém o binairy.
Base contém conf, logs, webapps, trabalho e temp. 1 para cada instância do tomcat.

Rinzwind
fonte
4

CATALINA_HOME vs CATALINA_BASE

Se você estiver executando várias instâncias, precisará das duas variáveis, caso contrário apenas CATALINA_HOME.

Em outras palavras: CATALINA_HOMEé obrigatório e CATALINA_BASEé opcional.

CATALINA_HOME representa a raiz da sua instalação do Tomcat.

Opcionalmente, o Tomcat pode ser configurado para várias instâncias, definindo $CATALINA_BASEpara cada instância. Se várias instâncias não estiverem configuradas, $CATALINA_BASEé o mesmo que $CATALINA_HOME.

Veja: Apache Tomcat 7 - Introdução

Executando com separado CATALINA_HOMEe CATALINA_BASEestá documentado em RUNNING.txt, que diz:

As variáveis ​​de ambiente CATALINA_HOMEe CATALINA_BASEsão usadas para especificar o local do Apache Tomcat e o local da sua configuração ativa, respectivamente.

Você não pode configurar CATALINA_HOMEe CATALINA_BASEvariáveis ​​no setenvscript, porque elas são usadas para encontrar esse arquivo.

Por exemplo:

(4.1) O Tomcat pode ser iniciado executando um dos seguintes comandos:

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

  $CATALINA_HOME/bin/startup.sh           (Unix)

ou

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

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

Várias instâncias do Tomcat

Em muitas circunstâncias, é desejável ter uma única cópia de uma distribuição binária do Tomcat compartilhada entre vários usuários no mesmo servidor. Para tornar isso possível, você pode definir a CATALINA_BASE variável de ambiente para o diretório que contém os arquivos para sua instância 'pessoal' do Tomcat.

Ao executar com um CATALINA_HOMEe separado CATALINA_BASE, os arquivos e diretórios são divididos da seguinte maneira:

Em CATALINA_BASE:

  • bin - Apenas: setenv.sh (* nix) ou setenv.bat (Windows), tomcat-juli.jar
  • conf - Arquivos de configuração do servidor (incluindo server.xml)
  • lib - Bibliotecas e classes, conforme explicado abaixo
  • logs - Arquivos de log e saída
  • webapps - Aplicativos da web carregados automaticamente
  • work - Diretórios de trabalho temporários para aplicativos da web
  • temp - Diretório usado pela JVM para arquivos temporários>

Em CATALINA_HOME:

  • bin - Scripts de inicialização e desligamento
  • lib - Bibliotecas e classes, conforme explicado abaixo
  • endorsed- Bibliotecas que substituem os "padrões endossados" padrão. Por padrão, está ausente.

Como verificar

A maneira mais fácil de verificar o que é seu CATALINA_BASEe CATALINA_HOMEexecutando startup.sh, por exemplo:

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

Você também pode verificar onde os arquivos do Tomcat estão instalados, por dpkgferramenta como abaixo (Debian / Ubuntu):

dpkg -L tomcat7-common
kenorb
fonte
3

Além de ser a melhor maneira de executar duas instâncias do tomcat, facilita a atualização.

Estou usando esta configuração.

<!-- 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 aponta para um ou outro diretório de implantação.

Binários básicos e bibliotecas estão em /opt/cópia apenas server.xml, web.xml(e alguns outros arquivos, leia os documentos, por favor) e criar diretórios bin, registros, webapps, temp, trabalho (RTLM, L como lovelly, por favor)

Você pode atualizar os binários do tomcat, modificando o CATALINA_HOMEarquivo $ CATALINA_BASE / bin / setenv.sh para cada instância ou pode apenas modificar o link simbólico, atualizando os binários "globalmente"

É mais fácil atualizar, mesmo se você tiver apenas uma instância.

dario o chato
fonte