Tomcat 시작 스크립트 옵션들.
Tomcat 시작 스크립트에는 많은 옵션들이 있는데, 이에 대해서 기술합니다.
start.sh 스크립트
Tomcat 을 시작하기 위해서는 CATALINA_HOME/bin/startup.sh 파일을 실행하면 된다. 이 스크립트 내용을 간단히 살펴보면 다음과 같다.
1 2 3 |
EXECUTABLE=catalina.sh exec "$PRGDIR"/"$EXECUTABLE" start "$@" |
최종적으로 catalina.sh 파일을 호출하고 있는데, 이 파일에는 시작시에 사용할 수 있는 각종 쉘 환경 변수들이 나온다.
Catalina.sh 스크립트
CATALINA_HOME
Catalina 가 빌드된 디렉토리. 여기서 빌드된 디렉토리는 설치한 홈 디렉토리를 말하기도 한다.
CATALINA_BASE
Catalina 설치에 동적 영역을 해결하기 위한 기본 디렉토리. 이는 Multi Instance 설치할때에 에 사용된다. 만일 지정하지 않으면 CATALINA_HOME 을 사용한다.
CATALINA_OUT
stdout, stderr 를 어디로 보낼지에 대한 전체 경로를 지정. 기본 값은 $CATALINA_BASE/logs/catalina.out 이 된다.
CATALINA_TMPDIR
JVM 에서 사용할 (java.io.tmpdir) 의 임시 디렉토리 위치. 기본값은 $CATALINA_BASE/temp 이다.
CATALINA_OPTS
“start”, “run”또는 “debug”명령이 실행될 때 사용되는 Java 런타임 옵션. JAVA_OPTS 에 포함되는 옵션이 아닌것이 여기에 포함된다. Tomcat 자체에서만 사용되는 옵션들만 포함되며 중지 프로세스, 버전 명령 등으로는 사용해서는 안된다.
JAVA_HOME
JDK 설치한 위치. debug 인자와 실행할때 필요하다.
JRE_HOME
JRE 설치한 위치. 지정하지 않으면 JAVA_HOME 을 사용하고, JRE_HOME 과 JAVA_HOME 지정되면, JRE_HOME 를 사용한다.
JAVA_OPTS
명령이 실행될때 사용되는 Java 런타임 옵션. CATALINA_OPTS 모든 옵션이 아닌것이 여기에 포함된다. Tomcat 에의해서 사용되어질 수 있고 중지 프로세스, 버전 명령에도 사용된다. 대부분의 옵션들은 CATALINA_OPTS 에 있어야 한다.
CATALINA_PID
catalina 시작 java 프로세스의 pid 를 가지고 있는 파일 경로.
LOGGING_CONFIG
Tomcat의 로깅 설정 파일을 재정의. 예를들면 다음과 같이 한다.
1 |
LOGGING_CONFIG="-Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties" |
LOGGING_MANAGER
Tomcat 의 로깅 메니저를 재정의. 예를들면 다음과 같이 한다.
1 |
LOGGING_MANAGER="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager" |
CATALINA_OPTS, JAVA_OPTS 예제
여기서 중요한 CATALINA_OPTS, JAVA_OPTS 이다. 대부분 이를 구분하지 않는다. 하지만 설명에서 나왔듯이 구분해서 사용하는 것이 좋다. 예를들면 다음과 같다.
1 2 3 4 5 6 7 |
## 시작/중지에 모두 사용 ## JAVA_OPTS=" ${JAVA_OPTS} -server" JAVA_OPTS=" ${JAVA_OPTS} -DjvmRoute=${JVM_ROUTE}" JAVA_OPTS=" ${JAVA_OPTS} -Dport.http=${HTTP_PORT}" JAVA_OPTS=" ${JAVA_OPTS} -Dport.https=${HTTPS_PORT}" JAVA_OPTS=" ${JAVA_OPTS} -Dport.ajp=${AJP_PORT}" JAVA_OPTS=" ${JAVA_OPTS} -Dport.shutdown=${SHUTDOWN_PORT}" |
JAVA_OPTS 는 Tomcat 에서 사용되어질 변수들을 정의할 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
## 기동시에만 사용 ## CATALINA_OPTS=" ${CATALINA_OPTS} -Xms2048m -Xmx2048m -XX:MaxPermSize=256m" CATALINA_OPTS=" ${CATALINA_OPTS} -verbose:gc" CATALINA_OPTS=" ${CATALINA_OPTS} -Xloggc:${CATALINA_BASE}/logs/gc_`date "+%Y%m%d%H"`.log" CATALINA_OPTS=" ${CATALINA_OPTS} -XX:+UseParallelGC" CATALINA_OPTS=" ${CATALINA_OPTS} -XX:+UseParallelOldGC" CATALINA_OPTS=" ${CATALINA_OPTS} -XX:+UseAdaptiveSizePolicy" CATALINA_OPTS=" ${CATALINA_OPTS} -XX:+PrintGCDetails" CATALINA_OPTS=" ${CATALINA_OPTS} -XX:+PrintGCTimeStamps" CATALINA_OPTS=" ${CATALINA_OPTS} -XX:+DisableExplicitGC" CATALINA_OPTS=" ${CATALINA_OPTS} -XX:+HeapDumpOnOutOfMemoryError" CATALINA_OPTS=" ${CATALINA_OPTS} -XX:HeapDumpPath=${CATALINA_BASE}/logs" CATALINA_OPTS=" ${CATALINA_OPTS} -Djava.security.egd=file:/dev/./urandom" |
위와같이 구분을 해서 사용하는 것이 좋다.