tomcat - variáveis ​​CATALINA_BASE e CATALINA_HOME

97

Tenho várias instâncias do tomcat 6 em execução no mesmo servidor (Linux) e funciona conforme o esperado. Estou tentando descobrir qual é a prática padrão em relação à configuração das variáveis CATALINA_HOMEe CATALINA_BASE.

Na minha instalação do tomcat, configurei CATALINA_HOMEpara apontar para uma pasta "comum" (digamos /tomcat6) e a CATALINA_BASEvariável varia dependendo do nome da instância (digamos /tomcat_instance1, /tomcat_instance2)

Minha pergunta é esta:

  • Eu realmente preciso de duas variáveis?
  • Ou posso apenas ter um CATALINA_HOMEe acabar com CATALINA_BASE(ou vice-versa)?
souser
fonte
3
A própria pergunta é realmente uma resposta.
Koray Tugay
4
O motivo pelo qual você precisa fazer isso é separar a manutenção do software Tomcat (que reside $CATALINA_HOME) da manutenção da configuração e do conteúdo da instância do Tomcat (que reside $CATALINA_BASE).
reinierpost

Respostas:

106

Se você estiver executando várias instâncias do Tomcat em um único host, deve definir CATALINA_BASEpara ser igual ao diretório .../tomcat_instance1ou .../tomcat_instance2conforme apropriado para cada instância e a CATALINA_HOMEvariável de ambiente para a instalação comum do Tomcat cujos arquivos serão compartilhados entre as duas instâncias.

O CATALINA_BASEambiente é opcional se você estiver executando uma única instância do Tomcat no host e será o padrão CATALINA_HOMEnesse caso. Se você estiver executando várias instâncias como está, ele deve ser fornecido.

Há uma descrição muito boa dessa configuração no RUNNING.txtarquivo na raiz da distribuição do Apache Tomcat sob o título Configuração avançada - Várias instâncias do Tomcat

Russ
fonte
1
Seu segundo parágrafo está incorreto ao usar o Tomcat empacotado no Ubuntu. Ele separa corretamente o software Tomcat (em $ CATALINA_HOME) da instância Tomcat (em $ CATALINA_BASE).
reinierpost de
84

CATALINA_HOME vs CATALINA_BASE

Se você estiver executando várias instâncias, precisará de ambas as variáveis; caso contrário, apenas CATALINA_HOME.

Em outras palavras: CATALINA_HOMEé obrigatório e CATALINA_BASEopcional.

CATALINA_HOME representa a raiz da 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 a localização do Apache Tomcat e a localização de sua configuração ativa, respectivamente.

Você não pode configurar CATALINA_HOMEe CATALINA_BASEvariáveis ​​no setenvscript, porque eles são usados ​​para localizar 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 de sua instância Tomcat 'pessoal'.

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

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 a seguir
  • logs - Arquivos de registro 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 a seguir
  • endorsed- Bibliotecas que substituem "Padrões endossados" padrão. Por padrão, ele está ausente.

Como verificar

A maneira mais fácil de verificar qual é a sua CATALINA_BASEe CATALINA_HOMEestá executando 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 Tomcat estão instalados, pela dpkgferramenta abaixo (Debian / Ubuntu):

dpkg -L tomcat7-common
Kenorb
fonte
8
Esta é uma resposta muito melhor do que a aceita. Muito bem explicado.
dkanejs
Explique como iniciar várias instâncias do tomcat com diferentes CATALINA_BASE?
Mark
CATALINA_BASE e CATALINA_HOME devem ser definidos como variáveis ​​de sistema: Windows: definir CATALINA_BASE = caminho
Marcos
11

Não posso dizer que conheço as melhores práticas, mas aqui está minha perspectiva.

Você está usando essas variáveis ​​para alguma coisa?

Pessoalmente, não precisei mudar nem, no Linux nem no Windows, em ambientes que variam do desenvolvimento à produção. A menos que você esteja fazendo algo específico que dependa deles, é provável que você os deixe sozinhos.

catalina.shdefine as variáveis ​​que o Tomcat precisa para funcionar imediatamente. Também diz que CATALINA_BASEé 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.

Tenho certeza de que você descobrirá se sua configuração funciona ou não ao iniciar o servidor.

Lauri Lehtinen
fonte
Você pode definir o catalina_homecaminho no \bin\catalina.sharquivo para ambas as instâncias do tomcat ??
Giri,
8

Apontar CATALINA_BASEpara um diretório diferente de CATALINA_HOMEpermite separar o diretório de configuração do diretório binários.

Por padrão, CATALINA_BASE(configurações) e CATALINA_HOME(binários) apontam para a mesma pasta, mas separar as configurações dos binários pode ajudá-lo a executar várias instâncias do Tomcat lado a lado sem duplicar os binários.

Também é útil quando você deseja atualizar os binários, sem modificar ou precisar fazer backup / restaurar seus arquivos de configuração para Tomcat.

Atualização 2018

Existe uma maneira mais fácil de configurar CATALINA_BASE agora com o makebaseutilitário. Publiquei um tutorial que cobre esse assunto em http://blog.rasia.io/blog/how-to-easily-setup-lucee-in-tomcat.html junto com um tutorial em vídeo em https://youtu.be / nuugoG5c-7M

A resposta original continua abaixo

Para tirar proveito desse recurso, basta criar o diretório config e apontar para ele com a CATALINA_BASEvariável de ambiente. Você terá que colocar alguns arquivos nesse diretório:

  • Copie o confdiretório do diretório de instalação original do Tomcat, incluindo seu conteúdo, e certifique-se de que o Tomcat tenha permissões de leitura para ele. Edite os arquivos de configuração de acordo com suas necessidades.
  • Crie um logsdiretório se conf/logging.propertiesapontar para ${catalina.base}/logse certifique-se de que o Tomcat tenha permissões de leitura / gravação para ele.
  • Crie um tempdiretório se não estiver substituindo o padrão para o $CATALINA_TMPDIRqual aponta ${CATALINA_BASE}/tempe certifique-se de que o Tomcat tenha permissões de gravação nele.
  • Crie um workdiretório com o padrão ${CATALINA_BASE}/worke certifique-se de que o Tomcat tenha permissões de gravação nele.
isapir
fonte
1

CATALINA_BASE é opcional.

No entanto, nos cenários a seguir, é útil configurar CATALINA_BASE que é separado de CATALINA_HOME.

  1. Quando mais de 1 instância do tomcat está sendo executada no mesmo host

    • Isso ajuda a ter apenas 1 runtime de instalação do tomcat, com várias configurações de servidor CATALINA_BASE em execução em portas separadas.
    • Se qualquer patch ou atualização de versão precisar ser, apenas 1 mudança de instalação é necessária ou precisa ser testada / verificada / assinada.
  2. Separação de preocupações (responsabilidade única)

    • O tempo de execução do Tomcat é padrão e não muda durante cada processo de lançamento. ou seja, binários do Tomcat
    • O processo de liberação pode adicionar mais coisas como aplicativo da web (pasta webapps), configuração do ambiente (diretório conf), diretório logs / temp / trabalho
Amit Kaneria
fonte
-5

Essa é a pasta pai de bin que contém o arquivo tomcat.exe:

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

CATALINA_BASEé o mesmo que CATALINA_HOME.

Guru
fonte
2
Sua resposta é enganosa ... a resposta correta deve ser: Se várias instâncias não estiverem configuradas , $ CATALINA_BASE é igual a $ CATALINA_HOME. De acordo com a documentação
Eddie B
1
CATALINA_BASE é igual a CATALINA_HOME apenas quando você executa a instância raiz. Quando você tem várias instâncias, será diferente.
splatch de
1
Eu diria que CATALINA_BASE e CATALINA HOME devem ser diferentes, mesmo se você tiver apenas uma instância. Dessa forma, o seu conteúdo é separado da sua instalação. Por exemplo, CATALINA_HOME em / usr / share / tomcat e CATALINA_BASE em / var / lib / tomcat
usuário1725779
não. Pode ser o mesmo, mas pode não ser o mesmo, para várias instâncias.
Andrey Regentov