tomcat - variabili CATALINA_BASE e CATALINA_HOME


97

Ho più istanze di Tomcat 6 in esecuzione sullo stesso server (Linux) e funziona come previsto. Sto cercando di scoprire qual è la pratica standard per quanto riguarda l'impostazione delle variabili CATALINA_HOMEe CATALINA_BASE.

Nella mia installazione di Tomcat, devo messa a punto CATALINA_HOMEper punto a una "comune" cartella (diciamo /tomcat6) e la CATALINA_BASEvariabile varia a seconda del nome istanza (ad esempio /tomcat_instance1, /tomcat_instance2)

La mia domanda è questa:

  • Ho davvero bisogno di due variabili?
  • Oppure posso averne solo uno CATALINA_HOMEe farla finita CATALINA_BASE(o viceversa)?

3
La domanda stessa è davvero una risposta.
Koray Tugay

4
Il motivo per cui è necessario farlo è separare la manutenzione del software Tomcat (che risiede $CATALINA_HOME) dalla manutenzione della configurazione e dei contenuti dell'istanza Tomcat (che risiede $CATALINA_BASE).
reinierpost

Risposte:


106

Se si eseguono più istanze di Tomcat su un singolo host, è necessario impostare CATALINA_BASEun valore uguale alla directory .../tomcat_instance1o .../tomcat_instance2appropriata per ciascuna istanza e la CATALINA_HOMEvariabile di ambiente all'installazione Tomcat comune i cui file verranno condivisi tra le due istanze.

L' CATALINA_BASEambiente è facoltativo se si esegue una singola istanza Tomcat sull'host e CATALINA_HOMEin tal caso verrà impostato per impostazione predefinita . Se stai eseguendo più istanze come te, dovrebbe essere fornito.

C'è una descrizione abbastanza buona di questa configurazione nel RUNNING.txtfile nella radice della distribuzione di Apache Tomcat sotto l'intestazione Configurazione avanzata - Istanze Tomcat multiple


1
Il secondo paragrafo non è corretto quando si utilizza Tomcat in pacchetto su Ubuntu. Separa correttamente il software Tomcat (in $ CATALINA_HOME) dall'istanza Tomcat (in $ CATALINA_BASE).
reinierpost

84

CATALINA_HOME vs CATALINA_BASE

Se stai eseguendo più istanze, allora hai bisogno di entrambe le variabili, altrimenti solo CATALINA_HOME.

In altre parole: CATALINA_HOMEè obbligatorio ed CATALINA_BASEè facoltativo.

CATALINA_HOME rappresenta la radice dell'installazione di Tomcat.

Facoltativamente, Tomcat può essere configurato per più istanze definendo $CATALINA_BASEper ciascuna istanza. Se non sono configurate più istanze, $CATALINA_BASEè uguale a $CATALINA_HOME.

Vedere: Apache Tomcat 7 - Introduzione

Funzionando con separato CATALINA_HOMEed CATALINA_BASEè documentato in RUNNING.txt che dice:

Le variabili di ambiente CATALINA_HOMEe CATALINA_BASEvengono utilizzate per specificare rispettivamente la posizione di Apache Tomcat e la posizione della sua configurazione attiva.

Non è possibile configurare CATALINA_HOMEe le CATALINA_BASEvariabili nello setenvscript, perché vengono utilizzate per trovare quel file.

Per esempio:

(4.1) Tomcat può essere avviato eseguendo uno dei seguenti comandi:

  %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)

Istanze Tomcat multiple

In molte circostanze, è desiderabile avere una singola copia di una distribuzione binaria Tomcat condivisa tra più utenti sullo stesso server. Per renderlo possibile, puoi impostare la CATALINA_BASE variabile d'ambiente sulla directory che contiene i file per la tua istanza Tomcat "personale".

Quando si esegue con un CATALINA_HOMEe separato CATALINA_BASE, i file e le directory vengono suddivisi come segue:

In CATALINA_BASE:

  • bin - Solo: setenv.sh (* nix) o setenv.bat (Windows), tomcat-juli.jar
  • conf - File di configurazione del server (incluso server.xml)
  • lib - Biblioteche e classi, come spiegato di seguito
  • logs - File di registro e di output
  • webapps - Applicazioni web caricate automaticamente
  • work - Directory di lavoro temporanee per applicazioni web
  • temp - Directory utilizzata dalla JVM per i file temporanei>

In CATALINA_HOME:

  • bin - Script di avvio e arresto
  • lib - Biblioteche e classi, come spiegato di seguito
  • endorsed- Biblioteche che sovrascrivono gli "Standard approvati" standard. Per impostazione predefinita è assente.

Come controllare

Il modo più semplice per controllare qual è il tuo CATALINA_BASEed CATALINA_HOMEè eseguendo startup.sh, ad esempio:

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

Puoi anche controllare dove sono installati i file Tomcat, tramite lo dpkgstrumento come di seguito (Debian / Ubuntu):

dpkg -L tomcat7-common

8
Questa è una risposta molto migliore di quella accettata. Molto ben spiegato.
dkanejs

Spiega per favore come avviare più istanze di Tomcat con CATALINA_BASE differenti?
Mark

CATALINA_BASE e CATALINA_HOME devono essere impostate come variabili di sistema: Windows: set CATALINA_BASE = path
Mark

11

Non posso dire di conoscere la migliore pratica, ma ecco la mia prospettiva.

State si utilizzano queste variabili per tutto ciò?

Personalmente, non ho avuto bisogno di cambiare né, su Linux né Windows, in ambienti che variano dallo sviluppo alla produzione. A meno che tu non stia facendo qualcosa di particolare che si basa su di loro, è probabile che tu possa lasciarli soli.

catalina.shimposta le variabili di cui Tomcat ha bisogno per funzionare fuori dagli schemi. Dice anche che CATALINA_BASEè opzionale:

#   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.

Sono abbastanza sicuro che scoprirai se la tua configurazione funziona o meno quando avvii il tuo server.


Puoi impostare il catalina_homepercorso nel \bin\catalina.shfile per entrambe le istanze di Tomcat ??
Giri

8

Il puntamento CATALINA_BASEa una directory diversa da CATALINA_HOMEconsente di separare la directory di configurazione dalla directory dei binari.

Per impostazione predefinita, CATALINA_BASE(configurazioni) e CATALINA_HOME(binari) puntano alla stessa cartella, ma separare le configurazioni dai binari può aiutarti a eseguire più istanze di Tomcat fianco a fianco senza duplicare i binari.

È anche utile quando si desidera aggiornare i file binari, senza modificare o se è necessario eseguire il backup / ripristino dei file di configurazione per Tomcat.

Aggiornamento 2018

C'è un modo più semplice per impostare CATALINA_BASE ora con l' makebaseutilità. Ho pubblicato un tutorial che tratta questo argomento su http://blog.rasia.io/blog/how-to-easily-setup-lucee-in-tomcat.html insieme a un video tutorial su https://youtu.be / nuugoG5c-7M

La risposta originale continua di seguito

Per sfruttare questa funzionalità, è sufficiente creare la directory di configurazione e puntare ad essa con la CATALINA_BASEvariabile di ambiente. Dovrai mettere alcuni file in quella directory:

  • Copia la confdirectory dalla directory di installazione originale di Tomcat, incluso il suo contenuto, e assicurati che Tomcat abbia le autorizzazioni di lettura per essa. Modifica i file di configurazione in base alle tue esigenze.
  • Crea una logsdirectory se conf/logging.propertiespunta ${catalina.base}/logse assicurati che Tomcat disponga delle autorizzazioni di lettura / scrittura per essa.
  • Crea una tempdirectory se non stai sovrascrivendo il valore predefinito a $CATALINA_TMPDIRcui punta ${CATALINA_BASE}/tempe assicurati che Tomcat abbia i permessi di scrittura su di essa.
  • Crea una workdirectory impostata come predefinita ${CATALINA_BASE}/worke assicurati che Tomcat disponga delle autorizzazioni di scrittura su di essa.

1

CATALINA_BASE è opzionale.

Tuttavia, nei seguenti scenari è utile impostare CATALINA_BASE che è separato da CATALINA_HOME.

  1. Quando più di 1 istanze di Tomcat sono in esecuzione sullo stesso host

    • Questo aiuta ad avere solo 1 runtime dell'installazione di Tomcat, con più configurazioni del server CATALINA_BASE in esecuzione su porte separate.
    • Se è necessario applicare patch o aggiornare la versione, sono necessarie solo 1 modifiche all'installazione o devono essere testate / verificate / firmate.
  2. Separazione delle preoccupazioni (responsabilità unica)

    • Il runtime di Tomcat è standard e non cambia durante ogni processo di rilascio. cioè i binari di Tomcat
    • Il processo di rilascio può aggiungere più cose come webapplication (cartella webapps), configurazione dell'ambiente (directory conf), log / temp / directory di lavoro

-5

Questa è la cartella principale di bin che contiene il file tomcat.exe:

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

CATALINA_BASEè lo stesso di CATALINA_HOME.


2
La tua risposta è fuorviante ... la risposta corretta dovrebbe indicare Se non sono configurate più istanze , $ CATALINA_BASE è uguale a $ CATALINA_HOME. Come da documentazione
Eddie B

1
CATALINA_BASE è uguale a CATALINA_HOME solo quando esegui l'istanza root. Quando hai più istanze, sarà diverso.
splatch

1
Direi che CATALINA_BASE e CATALINA HOME dovrebbero essere diversi anche se hai una sola istanza. In questo modo il tuo contenuto è separato dalla tua installazione. Ad esempio, CATALINA_HOME in / usr / share / tomcat e CATALINA_BASE in / var / lib / tomcat
user1725779

no. Potrebbe essere lo stesso, ma potrebbe non essere lo stesso, per le istanze multiple.
Andrey Regentov
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.