아파치 톰캣 서블릿/JSP 컨테이너

아파치 톰캣 7

Version 7.0.28-dev, Oct 2 2013
Apache Logo

Links

User Guide

참고

아파치 톰캣 개발

톰캣 웹 애플리케이션 배치

Table of Contents
Introduction

배치는 웹 애플리케이션(써드 파티 WAR 또는 직접 만든 웹 애플리케이션 모두 해당)을 톰캣 서버에 설치하는 절차를 위한 용어입니다.

웹 애플리케이션 배치는 여러 가지 방법으로 톰캣 서버에서 가능합니다.

  • 정적으로; 웹 애플리케이션은 톰캣이 시작하기 전에 설치됩니다.
  • 동적으로; 톰캣 매니저 웹 애플리케이션을 통해서나 이미 배치된 웹 애플리케이션을 조작해서 가능합니다.

톰캣 매니저는 URL기반 웹 애플리케이션 배치 기능이 있는 도구입니다. 클라이언트 배치자라는 도구가 있어서 명령 쉘 기반의 스크립트로 톰캣 매니저를 제어하고, 웹 애플리케이션의 컴파일과 검증, 웹 애플리케이션을 WAR(웹 애플리케이션 자원; Web Application Resource) 파일로 패키징하는 작업같은 추가 기능이 제공됩니다.

Installation

웹 애플리케이션의 정적인 배치에는 톰캣의 기본 제공 기능이기 때문에 설치가 필요하지 않습니다. 톰캣 매니저 매뉴얼에 상세 설명된 설정이 필요한 경우도 있지만, 설치를 위해서 톰캣 매니저로 배치 기능을 사용하지 않아도 됩니다. 하지만 톰캣 클라이언트 배치자(TCD)를 사용하려면 설치가 필요합니다.

TCD는 톰캣 코어 배포판에 패키징되어 있지 않아서, 다운로드 페이지에서 따로 다운로드 받아야 합니다. 다운로드 명칭은 보통 apache-tomcat-7.0.x-deployer 입니다.

TCD는 아파치 앤드 1.6.2 버전 이상 그리고 자바 설치가 되어있어야 합니다. 여러분의 환경은 ANT_HOME 환경변수가 앤트 설치된 경로를 가르키는 값으로 정의되어 있어야 하고, JAVA_HOME 환경변수는 자바가 설치된 곳을 가르키고 있어야 합니다. 덧붙여서, 앤트의 ant 명령, 자바의 javac 컴파일러 명령이 운영체제가 제공하는 명령어 쉘에서 실행할 수 있어야 합니다.

  1. TCD 배포판 다운로드하기
  2. TCD 패키지는 기존 설치된 톰캣에 설치되지 않아도 되기 때문에, 어느 경로에든 압축이 풀려있으면 됩니다.
  3. 톰캣 클라이언트 배치자 사용하는 방법을 읽어보세요.
A word on Contexts

웹 애플리케이션의 배치에 대하여 얘기하자면, 컨텍스트의 컨셉을 이해할 필요가 있습니다. 컨텍스트는 톰캣에서 하나의 웹 애플리케이션입니다.

톰캣에 컨텍스트 설정을 하기 위해서 컨텍스트 설명자가 필요합니다. 컨텍스트 설명자는 네이명 리소스 또는 세션 매니저 설정 등의 톰캣 관련 설정이 담겨있는 단순한 XML 파일입니다. 톰캣의 초기 버전에서는 컨텍스트 설명자가 톰캣의 주 설정 파일인 server.xml 내에 적용되었지만 지금은 권장되지 않습니다(그렇기는 해도 현재도 동작은 합니다).

컨텍스트 설명자는 톰캣이 어떻게 컨텍스트를 설정해야 하는지 알려주고, 톰캣 매니저와 TCD 같은 도구가 해당 역할을 적절하게 수행하기 위해서 이 컨텍스트 설명자를 사용합니다.

컨텍스트 설명자의 위치는 다음과 같습니다:

  1. $CATALINA_BASE/conf/[enginename]/[hostname]/context.xml
  2. $CATALINA_BASE/webapps/[webappname]/META-INF/context.xml

(1)의 파일명은 [webappname].xml처럼 되어야 합니다만 (2)의 파일명은 context.xml 입니다. 만약 컨텍스트 설명자가 Context를 제공하지 않으면, 톰캣은 기본값으로 컨텍스트를 설정합니다.

Deployment on Tomcat startup

만약 톰캣 매니저, 또는 TCD 사용에 관심이 없다면, 톰캣에 웹 애플리케이션 배치를 정적으로 하고 톰캣을 시작해야 할 필요가 있습니다. 이런 형식의 배치를 위해서 웹 애플리케이션이 위치하게 될 곳은 appBase 라고 불리는 호스트마다 지정되는 경로입니다. 이 위치에 소위 압축되지 않은 웹 애플리케이션 폴더나 압축된 웹 애플리케이션 자원 .WAR 파일을 복사하면 됩니다.

호스트(기본 호스트는 "localhost")에 appBase 속성으로 설정된 경로(기본 appBase는 "$CATALINA_BASE/webapps")에 있는 웹 애플리케이션들은 deployOnStartup 속성이 "true"값이면 톰캣이 시작될 때에 자동으로 배치됩니다.

다음의 배치 절차는 톰캣 시작시 발생됩니다:

  1. 컨텍스트 설명자가 처음 배치됩니다.
  2. 컨텍스트 설명자에 의해 참조되지 않은 압축되지 않은 웹 애플리케이션이 그 다음으로 배치될 것입니다. 만약 관련된 .WAR 파일이 appBase에 있고, 그 파일이 압축되지 않은 웹 애플리케이션보다 새로운 것이라면 기존 폴더는 지워지고, .WAR 파일에서 다시 재배치됩니다.
  3. .WAR 파일이 배치될 것입니다.

다시 한 번 명심할 것은 각각의 배치된 웹 애플리케이션을 위한, 컨텍스트 설명자가 하나라도 존재하지 않는다면 만들어질 것입니다.

Deploying on a running Tomcat server

실행 중인 톰캣 서버에 웹 애플리케이션을 배치하는 것도 가능합니다.

만약 Host autoDeploy 속성이 "true"이면, Host는, 필요에 따라서, 동적으로 웹 애플리케이션을 배치 또는 업데이트를 시도할 것입니다. 예를 들면 appBase 폴더에 새로운 .WAR 파일이 떨구어 지는 경우입니다. 이렇게 동작하기 위해서, Host는 기본 설정으로 잡혀있는 것처럼 백그라운드 프로세싱 기능을 필요로 합니다.

autoDeploy 속성을 "true"로 하면 실행중인 톰캣에서 다음이 가능합니다:

  • Host의 appBase에 복사된 .WAR 파일의 배치.
  • Host의 appBase 폴더에 있는 압축이 안 된 웹 애플리케이션의 배치.
  • 새로운 .WAR 파일이 복사될 때 예전 .WAR파일에서 배치된 웹 애플리케이션의 재배치. 이 경우 이전 웹 애플리케이션 폴더는 삭제되고, .WAR 파일이 다시 압축이 풀립니다. Host의 설정에 unpackWARs 속성이 "false"로 되어 있다면 .WAR 파일의 압축은 풀리지 않고, 웹 애플리케이션은 단지 압축된 채로 재배치됩니다.
  • 만약 /WEB-INF/web.xml 파일 (또는 WatchedResource에 정의된 어느 리소스라도) 업데이트가 발생하면 웹 애플리케이션을 리로딩합니다.
  • 배치된 웹 애플리케이션의 컨텍스트 설명자 파일이 갱신되면 웹 애플리케이션을 재배치합니다.
  • 글로벌 또는 웹 애플리케이션에서 사용하는 호스트별 컨텍스트 설명자 파일이 갱신되면 연관된 웹 애플리케이션들을 재배치합니다.
  • $CATALINA_BASE/conf/[enginename]/[hostname]/ 폴더에 컨텍스트 설명자 파일이 (이전에 배치된 웹 애플리케이션의 컨텍스트 경로명에 해당되는 파일명으로 된) 추가되면 웹 애플리케이션을 재배치합니다.
  • 도큐먼트 베이스 (docBase)가 삭제된 웹 애플리케이션의 제거. 윈도우에서, 이것은 안티-락킹 기능 (컨텍스트 설정 참고)이 활성화된 것으로 가정하며, 그렇지 않다면 실행중인 웹 애플리케이션의 자원을 삭제하는 것은 불가능합니다.

웹 애플리케이션 리로딩은 로더에서 설정될 수 있고, 그 경우 로드된 클래스는 변경 사항을 추적당하게 됩니다.

Deploying using the Tomcat Manager

톰캣 매니저는 고유한 매뉴얼 페이지가 있습니다.

Deploying using the Client Deployer Package

마지막으로, 웹 애플리케이션의 배치는 톰캣 클라이언트 배치자(TCD)를 사용해서 이뤄집니다. 이 패키지는 검증하고, 컴파일하고, .WAR로 압축하고, 웹 애플리케이션을 운영 또는 개발 중인 톰캣 서버에 배치하는 데 사용됩니다. 이 기능은 톰캣 매니저를 사용하고, 타겟 톰캣 서버는 실행중이어야 됩니다.

TCD를 사용하려면 아파치 앤트 사용법을 알고 있다고 가정합니다. 아파치 앤트는 스크립트 빌드 도구입니다. TCD는 사용 빌드 스크립트로 프리 패키지되어 있습니다. 아파치 앤트의 적당한 지식만 있으면 됩니다(이 페이지의 앞 부분에 있는 설치, 운영 체제 명령 쉘 사용의 익숙함과 환경 변수 설정).

TCD는 앤트 태스크, 배치에 앞서 JSP 컴파일을 위한 Jasper 페이지 컴파일러와 웹 애플리케이션 컨텍스트 설명자를 검증하는 태스크를 포함합니다. 유효성 검증 태스크 (org.apache.catalina.ant.ValidatorTask 클래스)는 유일한 파라미터를 받습니다: 웹 애플리케이션의 압축이 풀릴 경로.

TCD는 압축이 풀린 웹 애플리케이션을 입력(아래 사용되는 프로퍼티 목록 참고)으로 사용합니다. 프로그램으로 배치되는 웹 애플리케이션은 /META-INF/context.xml 형태로 컨텍스트 설명자를 포함하고 있을 것입니다.

TCD는 다음 타겟을 갖고 있는 앤트 스크립트를 포함합니다:

  • compile (기본): 웹 애플리케이션을 컴파일하고 검증합니다. 단독으로 사용될 수 있고, 톰캣이 실행중이 아니어도 됩니다. Jasper에 의해 생성된 코드는 해당 실행 컴포넌트에 의존적이기 때문에, 컴파일된 애플리케이션은 관련된 톰캣 7.0.x 서버 릴리스에서 동작할 것입니다만, 다른 톰캣 릴리스에서의 동작은 보장할 수 없습니다. 이 타겟은 웹 애플리케이션의 /WEB-INF/classes 폴더에 있는 모든 자바 소스 파일을 자동으로 컴파일하게 될 것입니다.
  • deploy: 톰캣 서버에 웹 애플리케이션 (컴파일 되었든 아니든) 배치합니다.
  • undeploy: 웹 애플리케이션 제거
  • start: 웹 애플리케이션 시작
  • reload: 웹 애플리케이션 리로드
  • stop: 웹 애플리케이션 정지

배치용 설정을 위해서, TCD 설치 디렉토리 루트에 deployer.properties 이름의 파일을 만들어야 합니다. 이 파일에, 다음의 줄마다 이름=값 쌍을 추가하면 됩니다:

추가적으로, 타겟 톰캣 매니저 (TCD 유저)를 위한 사용자 설정이 되어 있는지 확인할 필요가 있습니다. 그렇지 않다면 TCD의 톰캣 매니저 인증을 할 수 없어서 배치가 실패하게 됩니다. 이에 대한 것은 톰캣 매니저 페이지를 참고하세요.

  • build: 기본적으로 ${build}/webapp/${path} 빌드 폴더가 사용될 것입니다. compile 타겟 실행 후, .WAR 파일은 ${build}/webapp/${path}.war 위치에 생성됩니다.
  • webapp: 컴파일되고 검증될 압축이 풀린 웹 애플리케이션을 포함한 디렉토리. 기본적으로, 폴더는 myapp 입니다.
  • path: 배치된 웹 애플리케이션의 컨텍스트 경로, 기본적으로 myapp 입니다.
  • url: 실행 중인 톰캣 서버의 톰캣 매니저 웹 애플리케이션 절대 URL이며, 웹 애플리케이션을 배치하거나 제거하는데 사용됩니다. 기본적으로, 배치자는 http://localhost:8080/manager/text 주소로 로컬호스트에서 실행되는 톰캣 인스턴스에 접속을 시도합니다.
  • username: 톰캣 매니저 사용자명 (사용자는 manager-script 권한을 갖고 있어야 합니다)
  • password: 톰캣 매니저 비밀번호.

Copyright © 1999-2013, Apache Software Foundation