tomcat-CATALINA_BASE 및 CATALINA_HOME 변수
동일한 서버 (Linux)에서 실행중인 tomcat 6의 여러 인스턴스가 있으며 예상대로 작동합니다. CATALINA_HOME
및 CATALINA_BASE
변수 설정과 관련하여 표준 관행이 무엇인지 알아 보려고 합니다.
내 tomcat 설치에서 CATALINA_HOME
"공통"폴더 (예 :) 를 가리 키도록 설정 /tomcat6
했으며 CATALINA_BASE
변수는 인스턴스 이름 (예 : /tomcat_instance1
, /tomcat_instance2
) 에 따라 다릅니다.
내 질문은 다음과 같습니다.
- 정말 두 개의 변수가 필요합니까?
- 또는 캔 난 그냥 하나를 가지고
CATALINA_HOME
와 멀리 할CATALINA_BASE
(또는 그 반대)?
단일 호스트에서 Tomcat의 여러 인스턴스를 실행하는 경우 각 인스턴스에 대해 또는 디렉토리와 CATALINA_BASE
동일하게 설정 하고 두 인스턴스간에 파일을 공유 할 일반 Tomcat 설치에 대한 환경 변수를 설정해야합니다..../tomcat_instance1
.../tomcat_instance2
CATALINA_HOME
CATALINA_BASE
호스트에 하나의 톰캣 인스턴스를 실행하고 기본값으로 설정됩니다 경우 환경은 선택 사항입니다 CATALINA_HOME
경우에. 여러 인스턴스를있는 그대로 실행하는 경우 제공되어야합니다.
Advanced Configuration-Multiple Tomcat InstancesRUNNING.txt
라는 제목 아래 Apache Tomcat 배포의 루트 에있는 파일 에이 설정에 대한 꽤 좋은 설명이 있습니다.
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_HOME
과 CATALINA_BASE
같이 문서화되어 있습니다.
CATALINA_HOME
및CATALINA_BASE
환경 변수는 각각 아파치 톰캣의 위치 및 활성 구성의 위치를 지정하는데 사용된다.
CATALINA_HOME
및CATALINA_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.jarconf
-서버 구성 파일 (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
모범 사례를 안다고 말할 수는 없지만 여기에 내 관점이 있습니다.
있습니까 당신은 아무것도에 대한 이러한 변수를 사용하고 계십니까?
Personally, I haven't needed to change neither, on Linux nor Windows, in environments varying from development to production. Unless you are doing something particular that relies on them, chances are you could leave them alone.
catalina.sh
sets the variables that Tomcat needs to work out of the box. It also says that CATALINA_BASE
is optional:
# 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.
I'm pretty sure you'll find out whether or not your setup works when you start your server.
Pointing CATALINA_BASE
to a different directory from CATALINA_HOME
allows you to separate the configuration directory from the binaries directory.
By default, CATALINA_BASE
(configurations) and CATALINA_HOME
(binaries) point to the same folder, but separating the configurations from the binaries can help you to run multiple instances of Tomcat side by side without duplicating the binaries.
It is also useful when you want to update the binaries, without modifying, or needing to backup/restore your configuration files for Tomcat.
Update 2018
There is an easier way to set CATALINA_BASE now with the makebase
utility. I have posted a tutorial that covers this subject at http://blog.rasia.io/blog/how-to-easily-setup-lucee-in-tomcat.html along with a video tutorial at https://youtu.be/nuugoG5c-7M
Original answer continued below
To take advantage of this feature, simply create the config directory and point to it with the CATALINA_BASE
environment variable. You will have to put some files in that directory:
- Copy the
conf
directory from the original Tomcat installation directory, including its contents, and ensure that Tomcat has read permissions to it. Edit the configuration files according to your needs. - Create a
logs
directory ifconf/logging.properties
points to${catalina.base}/logs
, and ensure that Tomcat has read/write permissions to it. - Create a
temp
directory if you are not overriding the default of$CATALINA_TMPDIR
which points to${CATALINA_BASE}/temp
, and ensure that Tomcat has write permissions to it. - Create a
work
directory which defaults to${CATALINA_BASE}/work
, and ensure that Tomcat has write permissions to it.
CATALINA_BASE is optional.
However, in the following scenarios it helps to setup CATALINA_BASE that is separate from CATALINA_HOME.
When more than 1 instances of tomcat are running on same host
- This helps have only 1 runtime of tomcat installation, with multiple CATALINA_BASE server configurations running on separate ports.
- If any patching, or version upgrade needs be, only 1 installation changes required, or need to be tested/verified/signed-off.
Separation of concern (Single responsibility)
- Tomcat runtime is standard and does not change during every release process. i.e. Tomcat binaries
- Release process may add more stuff as webapplication (webapps folder), environment configuration (conf directory), logs/temp/work directory
That is the parent folder of bin which contains tomcat.exe file:
CATALINA_HOME='C:\Program Files\Apache Software Foundation\Tomcat 6.0'
CATALINA_BASE
is the same as CATALINA_HOME
.
참고URL : https://stackoverflow.com/questions/3090398/tomcat-catalina-base-and-catalina-home-variables
'programing' 카테고리의 다른 글
여러 조건이있는 javascript if 문이 모든 조건을 테스트합니까? (0) | 2020.09.05 |
---|---|
sqlalchemy 모델의 정의 된 열을 반복하는 방법? (0) | 2020.09.05 |
Java 애플리케이션을 다시 시작하려면 어떻게해야합니까? (0) | 2020.09.05 |
전략 패턴과 종속성 주입의 차이점은 무엇입니까? (0) | 2020.09.05 |
두 개의 int를 나누면 double에 할당 될 때 올바른 값이 생성되지 않는 이유는 무엇입니까? (0) | 2020.09.05 |