2008.06.08 02:25

앤트(Ant)에서 톰캣에 웹 애플리케이션을 디플로이하는 방법..

톰캣에 웹 애플리케이션을 디플로이하는 방법에는 두 가지가 있어요.
  • ${톰캣_설치_경로}[각주:1]/webapps 디렉토리에 war 파일을 추가한다.
  • ${톰캣_설치_경로}/conf/Catalina/localhost 디렉토리에 context 파일을 추가한다.
war 파일은 일반적인 웹 애플리케이션 파일이구요.
context 파일 내용은 대략 다음과 같아요.

<?xml version="1.0" encoding="UTF-8"?>
<Context path="/${웹애플리케이션_이름}" docBase="${웹애플리케이션_디렉토리}" reloadable="true">
</Context>

첫번째 방법이 보통 많이 쓰이는 방법이죠. 저는 두번째 방법을 더 선호합니다만..



그런데 사실 한 가지 방법이 더 있습니다.

톰캣의 manager 어플리케이션을 이용하는 것입니다. ^-^/

톰캣의 manager 어플리케이션을 사용하려면 다음을 확인합니다.

1.톰캣에 manager 어플리케이션이 설치되어 있는지 확인한다.
   (5.0, 5.5, 6.0 버전 모두 기본적으로 설치되어 있네요..)

2. manager 권한이 있는 사용자를 등록한다.
    ${톰캣_설치_경로}\conf\tomcat-users.xml 파일에 다음 내용을 추가합니다.

<role rolename="manager"/>
<user username="${사용자_아이디}" password="${사용자_암호}" roles="manager"/>

3. 서버를 띄우고 http://localhost:8080/manager/html 로 접속합니다.
    (등록한 사용자의 아이디/암호를 입력합니다.)

다음과 같은 화면에서 Deploy를 실행하면 됩니다.
Context 파일 내용을 설정하거나 war 파일을 업로드해서 디플로이할 수 있습니다.


그리고 매니저에서는 다른 웹 애플리케이션을 실행/중지/리로드/언디플로이할 수 있어요~



이제부터 본론으로 들어갑니다.

제가 말씀드릴 앤트로 톰캣에 웹 애플리케이션을 디플로이하는 방법은 내부적으로 톰캣의 manager 애플리케이션을 이용합니다. 그러므로 먼저 톰캣의 manager 애플리케이션이 설정이 되어있어야 해요~!

빌드 파일에서 사용할 프로퍼티 파일은 다음과 같습니다. (sample 어플리케이션을 배포한다고 가정합니다.)

# catalina home directory
catalina.home=C:\Tomcat[각주:2]
catalina.ant.jar=${catalina.home}/server/lib/catalina-ant.jar
catalina.tasks.file=catalina.tasks[각주:3]

# catalina manager configurations
catalina.manager.url=http://localhost:8080/manager
catalina.manager.user.name=test[각주:4]
catalina.manager.user.password=test

# application configurations
application.path=/sample[각주:5]
application.context=sample.xml[각주:6]

그리고 태스크 정의 파일이 필요합니다. 다음과 같은 내용으로 catalina.tasks 라는 파일을 만듭니다.

# catalina tasks properties
deploy=org.apache.catalina.ant.DeployTask
undeploy=org.apache.catalina.ant.UndeployTask
start=org.apache.catalina.ant.StartTask
reload=org.apache.catalina.ant.ReloadTask
stop=org.apache.catalina.ant.StopTask
sessions=org.apache.catalina.ant.SessionsTask
list=org.apache.catalina.ant.ListTask
serverinfo=org.apache.catalina.ant.ServerinfoTask
roles=org.apache.catalina.ant.RolesTask
resources=org.apache.catalina.ant.ResourcesTask

어플리케이션 컨텍스트 설정 파일이 필요합니다. 다음과 같은 내용으로 sample.xml 이라는 파일을 만듭니다.

<?xml version="1.0" encoding="UTF-8"?>
<Context path="/sample" docBase="C:\Sample[각주:7]" debug="0" privileged="true" reloadable="true">
    <Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost.sample." suffix=".txt" timestamp="true" />
</Context>

마지막으로 빌드 파일 내용은 다음과 같습니다.

먼저 태스크 정의 파일을 설정해야 합니다.

<taskdef file="catalina.tasks" classpath="${catalina.ant.jar}" />

그러면 다음과 같은 태스크들을 사용할 수 있어요.

<target name="catalina.deploy" description="Deploy web application">
    <deploy url="${catalina.manager.url}" username="${catalina.manager.user.name}" password="${catalina.manager.user.password}" path="${application.path}" config="${application.context}" update="true" />
</target>

<target name="catalina.undeploy" description="Undeploy web application">
    <undeploy url="${catalina.manager.url}" username="${catalina.manager.user.name}" password="${catalina.manager.user.password}" path="${application.path}" />
</target>

<target name="catalina.start" description="Start web application">
    <start url="${catalina.manager.url}" username="${catalina.manager.user.name}" password="${catalina.manager.user.password}" path="${application.path}" />
</target>

<target name="catalina.reload" description="Reload web application">
    <reload url="${catalina.manager.url}" username="${catalina.manager.user.name}" password="${catalina.manager.user.password}" path="${application.path}" />
</target>

<target name="catalina.stop" description="Stop web application">
    <stop url="${catalina.manager.url}" username="${catalina.manager.user.name}" password="${catalina.manager.user.password}" path="${application.path}" />
</target>

<target name="catalina.sessions" description="View server information">
    <sessions url="${catalina.manager.url}" username="${catalina.manager.user.name}" password="${catalina.manager.user.password}" path="${application.path}" />
</target>

<target name="catalina.list" description="List web applications">
    <list url="${catalina.manager.url}" username="${catalina.manager.user.name}" password="${catalina.manager.user.password}" />
</target>

<target name="catalina.serverinfo" description="View server information">
    <serverinfo url="${catalina.manager.url}" username="${catalina.manager.user.name}" password="${catalina.manager.user.password}" />
</target>

<target name="catalina.roles" description="View server information">
    <roles url="${catalina.manager.url}" username="${catalina.manager.user.name}" password="${catalina.manager.user.password}" />
</target>

<target name="catalina.resources" description="View server information">
    <resources url="${catalina.manager.url}" username="${catalina.manager.user.name}" password="${catalina.manager.user.password}" />
</target>

디플로이 태스크를 자세히 살펴보죠.

<deploy url="${catalina.manager.url}" username="${catalina.manager.user.name}" password="${catalina.manager.user.password}" path="${application.path}" config="${application.context}" update="true" />

config 속성에 애플리케이션의 컨텍스트 설정 파일의 위치를 입력하는데요..
config 속성 대신에 war 속성을 써서 애플리케이션 war 파일의 위치를 입력할 수도 있어요.
두 속성은 반드시 어느 하나만 써야해요. 안 그러면 에러날 걸~?

톰캣의 앤트태스크를 이용하면 애플리케이션을 디플로이하는 것 뿐만 아니라 웹 어플리케이션의 목록을 보는 것, 애플리케이션을 실행하거나 중지하는 것 등등의 작업을 앤트로 할 수가 있어요. 이게 다 톰캣 개발자들이 앤트 태스크를 쓰기 좋게 만들어둔 덕분이죠. 감사감사 ^^*

보면 볼수록 앤트는 멋진 것 같아요.

환경:
Tomcat 5.0 or 5.5
Ant 1.7.0

  1. ${무언가} 는 변수를 뜻해요! [본문으로]
  2. 톰캣의 설치 경로에요. [본문으로]
  3. 태스크 정의 파일 이름 [본문으로]
  4. manager 권한이 있는 사용자 이름과 암호 [본문으로]
  5. 샘플 어플리케이션 경로 [본문으로]
  6. sample 어플리케이션 컨텍스트 파일 이름 [본문으로]
  7. 샘플 어플리케이션 디플로이 경로 [본문으로]
Trackback 0 Comment 6


티스토리 툴바