tomcat-CATALINA_BASE 및 CATALINA_HOME 변수


98

동일한 서버 (Linux)에서 실행중인 tomcat 6의 여러 인스턴스가 있으며 예상대로 작동합니다. CATALINA_HOMECATALINA_BASE변수 설정과 관련하여 표준 관행이 무엇인지 알아 보려고 합니다.

내 tomcat 설치에서 CATALINA_HOME"공통"폴더 (예 :) 를 가리 키도록 설정 /tomcat6했으며 CATALINA_BASE변수는 인스턴스 이름 (예 : /tomcat_instance1, /tomcat_instance2) 에 따라 다릅니다.

내 질문은 다음과 같습니다.

  • 정말 두 개의 변수가 필요합니까?
  • 또는 캔 난 그냥 하나를 가지고 CATALINA_HOME와 멀리 할 CATALINA_BASE(또는 그 반대)?

3
질문 자체가 정말 답입니다.
Koray Tugay 2014

4
이 작업을 수행해야하는 이유 $CATALINA_HOME는 Tomcat 인스턴스 구성 및 콘텐츠 ( 에 있음 )의 유지 관리 에서 Tomcat 소프트웨어 (에 있음 )의 유지 관리를 분리하기 위해서 $CATALINA_BASE입니다.
reinierpost 2015 년

답변:


106

단일 호스트에서 Tomcat의 여러 인스턴스를 실행하는 경우 각 인스턴스에 대해 또는 디렉토리와 CATALINA_BASE동일하게 설정 하고 두 인스턴스간에 파일을 공유 할 공통 Tomcat 설치에 대한 환경 변수를 설정해야합니다..../tomcat_instance1.../tomcat_instance2CATALINA_HOME

CATALINA_BASE호스트에 하나의 톰캣 인스턴스를 실행하고 기본값으로 설정됩니다 경우 환경은 선택 사항입니다 CATALINA_HOME경우에. 여러 인스턴스를있는 그대로 실행하는 경우 제공되어야합니다.

Advanced Configuration-Multiple Tomcat InstancesRUNNING.txt 라는 제목 아래 Apache Tomcat 배포의 루트 에있는 파일 에이 설정에 대한 꽤 좋은 설명이 있습니다.


1
Ubuntu에서 패키징 된 Tomcat을 사용할 때 두 번째 단락이 올바르지 않습니다. Tomcat 소프트웨어 ($ CATALINA_HOME)와 Tomcat 인스턴스 ($ CATALINA_BASE)를 적절하게 분리합니다.
reinierpost

85

CATALINA_HOME vs CATALINA_BASE

여러 인스턴스를 실행하는 경우 두 변수가 모두 필요하고 그렇지 않으면 CATALINA_HOME.

즉 : CATALINA_HOME필수 항목이며 CATALINA_BASE선택 사항입니다.

CATALINA_HOME Tomcat 설치의 루트를 나타냅니다.

선택적으로 Tomcat은 $CATALINA_BASE각 인스턴스에 대해 정의 하여 여러 인스턴스에 대해 구성 할 수 있습니다 . 여러 인스턴스가 구성되지 않은 경우과 $CATALINA_BASE동일합니다 $CATALINA_HOME.

참조 : Apache Tomcat 7-소개

별도로 실행되며 RUNNING.txt에 다음 CATALINA_HOMECATALINA_BASE같이 설명되어 있습니다.

CATALINA_HOMECATALINA_BASE환경 변수는 각각 아파치 톰캣의 위치 및 활성 구성의 위치를 지정하는데 사용된다.

CATALINA_HOMECATALINA_BASE변수는 setenv해당 파일을 찾는 데 사용되기 때문에 스크립트 에서 구성 할 수 없습니다 .

예를 들면 :

(4.1) Tomcat은 다음 명령 중 하나를 실행하여 시작할 수 있습니다.

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

  $CATALINA_HOME/bin/startup.sh           (Unix)

또는

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

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

여러 Tomcat 인스턴스

많은 상황에서 동일한 서버의 여러 사용자가 공유하는 Tomcat 바이너리 배포의 단일 사본을 갖는 것이 바람직합니다. 이를 가능하게하려면 CATALINA_BASE '개인'Tomcat 인스턴스에 대한 파일이 포함 된 디렉토리에 환경 변수를 설정할 수 있습니다 .

별도의 CATALINA_HOME및로 실행하는 CATALINA_BASE경우 파일 및 디렉토리는 다음과 같이 분할됩니다.

에서 CATALINA_BASE:

  • bin -전용 : setenv.sh (* nix) 또는 setenv.bat (Windows), tomcat-juli.jar
  • conf -서버 구성 파일 (server.xml 포함)
  • lib -아래 설명 된 라이브러리 및 클래스
  • logs -로그 및 출력 파일
  • webapps -자동으로로드되는 웹 애플리케이션
  • work -웹 애플리케이션을위한 임시 작업 디렉토리
  • temp -JVM에서 임시 파일로 사용하는 디렉토리>

에서 CATALINA_HOME:

  • bin -시작 및 종료 스크립트
  • lib -아래 설명 된 라이브러리 및 클래스
  • endorsed-표준 "승인 된 표준"을 재정의하는 라이브러리. 기본적으로 없습니다.

확인 방법

귀하의 계정이 무엇인지 확인하는 가장 쉬운 방법 은 다음 CATALINA_BASE과 같이 CATALINA_HOME실행하는 것 startup.sh입니다.

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

dpkg아래 도구 (Debian / Ubuntu)를 사용 하여 Tomcat 파일이 설치된 위치를 확인할 수도 있습니다 .

dpkg -L tomcat7-common

8
이것은 허용되는 훨씬 더 나은 대답입니다. 아주 잘 설명되었습니다.
dkanejs

CATALINA_BASE가 다른 여러 Tomcat 인스턴스를 시작하는 방법을 설명하십시오.
Mark

CATALINA_BASE 및 CATALINA_HOME은 시스템 변수로 설정해야합니다. Windows : set CATALINA_BASE = path
Mark

11

모범 사례를 안다고 말할 수는 없지만 여기에 내 관점이 있습니다.

있습니까 당신은 아무것도에 대한 이러한 변수를 사용하고 계십니까?

개인적으로 저는 개발에서 생산에 이르기까지 다양한 환경에서 Linux 나 Windows 모두 변경할 필요가 없었습니다. 당신이 그들에게 의존하는 특정한 일을하지 않는 한, 당신은 그들을 내버려 둘 수 있습니다.

catalina.shTomcat이 즉시 작동하는 데 필요한 변수를 설정합니다. 또한 CATALINA_BASE선택 사항 이라고 말합니다 .

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

서버를 시작할 때 설정이 작동하는지 여부를 알 수있을 것이라고 확신합니다.


Tomcat의 두 인스턴스에 대해 파일에 catalina_home경로 를 설정할 수 있습니까 \bin\catalina.sh??
Giri

8

CATALINA_BASE다른 디렉토리를 가리키는CATALINA_HOME 바이너리 디렉토리에서 구성 디렉토리를 분리 할 수 ​​있습니다.

기본적으로 CATALINA_BASE(구성) 및CATALINA_HOME (binaries)는 동일한 폴더를 가리 키지 만 바이너리에서 구성을 분리하면 바이너리를 복제하지 않고 Tomcat의 여러 인스턴스를 나란히 실행하는 데 도움이 될 수 있습니다.

또한 Tomcat에 대한 구성 파일을 수정하거나 백업 / 복원 할 필요없이 바이너리를 업데이트하려는 경우에도 유용합니다.

2018 업데이트

이제 makebase유틸리티를 사용하여 CATALINA_BASE를 설정하는 더 쉬운 방법이 있습니다 . 이 주제를 다루는 자습서를 http://blog.rasia.io/blog/how-to-easily-setup-lucee-in-tomcat.html에 게시 했으며 비디오 자습서는 https://youtu.be에 게시했습니다. / nuugoG5c-7M

아래에 계속되는 원래 답변

이 기능을 활용하려면 config 디렉토리를 만들고 CATALINA_BASE환경 변수로 가리키면됩니다 . 해당 디렉토리에 몇 가지 파일을 넣어야합니다.

  • conf컨텐츠를 포함하여 원래 Tomcat 설치 디렉토리에서 디렉토리를 복사하고 Tomcat에 읽기 권한이 있는지 확인하십시오. 필요에 따라 구성 파일을 편집하십시오.
  • 가리키는 logs경우 디렉토리 만들기conf/logging.properties${catalina.base}/logs 만들고 Tomcat에 읽기 / 쓰기 권한이 있는지 확인합니다.
  • 크리에이트 temp당신의 기본 무시하지 않는 경우 디렉토리를 $CATALINA_TMPDIR하는 점을 ${CATALINA_BASE}/temp, 그리고 Tomcat이 여기에 쓰기 권한이 있는지 확인합니다.
  • 크리에이트 work디폴트 디렉토리를 ${CATALINA_BASE}/work, 그리고 Tomcat이 여기에 쓰기 권한이 있는지 확인합니다.

1

CATALINA_BASE는 선택 사항입니다.

그러나 다음 시나리오에서는 CATALINA_HOME과 별도로 CATALINA_BASE를 설정하는 것이 도움이됩니다.

  1. 두 개 이상의 tomcat 인스턴스가 동일한 호스트에서 실행중인 경우

    • 이렇게하면 별도의 포트에서 실행되는 여러 CATALINA_BASE 서버 구성과 함께 Tomcat 설치의 런타임이 1 개뿐입니다.
    • 패치 또는 버전 업그레이드가 필요한 경우 하나의 설치 변경 만 필요하거나 테스트 / 검증 / 사인 오프해야합니다.
  2. 우려 사항 분리 (단일 책임)

    • Tomcat 런타임은 표준이며 모든 릴리스 프로세스 중에 변경되지 않습니다. 즉 Tomcat 바이너리
    • 릴리스 프로세스는 웹 애플리케이션 (webapps 폴더), 환경 구성 (conf 디렉토리), logs / temp / work 디렉토리와 같은 항목을 더 추가 할 수 있습니다.

-5

이것이 tomcat.exe 파일을 포함하는 bin의 상위 폴더입니다.

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

CATALINA_BASE와 동일합니다 CATALINA_HOME.


2
귀하의 대답은 오해의 소지가 있습니다. 정답에는 If multiple instances are not configured , $ CATALINA_BASE is the same as $ CATALINA_HOME.` 문서
Eddie B

1
CATALINA_BASE는 루트 인스턴스를 실행할 때만 CATALINA_HOME과 동일합니다. 인스턴스가 여러 개인 경우 달라집니다.
splatch

1
인스턴스가 하나만 있어도 CATALINA_BASE와 CATALINA HOME은 달라야합니다. 이렇게하면 콘텐츠가 설치와 분리됩니다. 예를 들어, / usr / share / tomcat의 CATALINA_HOME 및 / var / lib / tomcat의 CATALINA_BASE
user1725779

아니. 다중 인스턴스의 경우 동일 할 수 있지만 동일하지 않을 수 있습니다.
Andrey Regentov 2015
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.