톰캣에 웹 애플리케이션을 디플로이하는 방법에는 두 가지가 있어요.
context 파일 내용은 대략 다음과 같아요.
첫번째 방법이 보통 많이 쓰이는 방법이죠. 저는 두번째 방법을 더 선호합니다만..
그런데 사실 한 가지 방법이 더 있습니다.
톰캣의 manager 어플리케이션을 이용하는 것입니다. ^-^/
톰캣의 manager 어플리케이션을 사용하려면 다음을 확인합니다.
1.톰캣에 manager 어플리케이션이 설치되어 있는지 확인한다.
(5.0, 5.5, 6.0 버전 모두 기본적으로 설치되어 있네요..)
2. manager 권한이 있는 사용자를 등록한다.
${톰캣_설치_경로}\conf\tomcat-users.xml 파일에 다음 내용을 추가합니다.
3. 서버를 띄우고 http://localhost:8080/manager/html 로 접속합니다.
(등록한 사용자의 아이디/암호를 입력합니다.)
다음과 같은 화면에서 Deploy를 실행하면 됩니다.
Context 파일 내용을 설정하거나 war 파일을 업로드해서 디플로이할 수 있습니다.
그리고 매니저에서는 다른 웹 애플리케이션을 실행/중지/리로드/언디플로이할 수 있어요~
이제부터 본론으로 들어갑니다.
제가 말씀드릴 앤트로 톰캣에 웹 애플리케이션을 디플로이하는 방법은 내부적으로 톰캣의 manager 애플리케이션을 이용합니다. 그러므로 먼저 톰캣의 manager 애플리케이션이 설정이 되어있어야 해요~!
빌드 파일에서 사용할 프로퍼티 파일은 다음과 같습니다. (sample 어플리케이션을 배포한다고 가정합니다.)
그리고 태스크 정의 파일이 필요합니다. 다음과 같은 내용으로 catalina.tasks 라는 파일을 만듭니다.
또 어플리케이션 컨텍스트 설정 파일이 필요합니다. 다음과 같은 내용으로 sample.xml 이라는 파일을 만듭니다.
마지막으로 빌드 파일 내용은 다음과 같습니다.
먼저 태스크 정의 파일을 설정해야 합니다.
그러면 다음과 같은 태스크들을 사용할 수 있어요.
디플로이 태스크를 자세히 살펴보죠.
config 속성에 애플리케이션의 컨텍스트 설정 파일의 위치를 입력하는데요..
config 속성 대신에 war 속성을 써서 애플리케이션 war 파일의 위치를 입력할 수도 있어요.
두 속성은 반드시 어느 하나만 써야해요. 안 그러면 에러날 걸~?
톰캣의 앤트태스크를 이용하면 애플리케이션을 디플로이하는 것 뿐만 아니라 웹 어플리케이션의 목록을 보는 것, 애플리케이션을 실행하거나 중지하는 것 등등의 작업을 앤트로 할 수가 있어요. 이게 다 톰캣 개발자들이 앤트 태스크를 쓰기 좋게 만들어둔 덕분이죠. 감사감사 ^^*
보면 볼수록 앤트는 멋진 것 같아요.
- ${톰캣_설치_경로}1/webapps 디렉토리에 war 파일을 추가한다.
- ${톰캣_설치_경로}/conf/Catalina/localhost 디렉토리에 context 파일을 추가한다.
context 파일 내용은 대략 다음과 같아요.
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/${웹애플리케이션_이름}" docBase="${웹애플리케이션_디렉토리}" reloadable="true">
</Context>
<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"/>
<user username="${사용자_아이디}" password="${사용자_암호}" roles="manager"/>
3. 서버를 띄우고 http://localhost:8080/manager/html 로 접속합니다.
(등록한 사용자의 아이디/암호를 입력합니다.)
다음과 같은 화면에서 Deploy를 실행하면 됩니다.
Context 파일 내용을 설정하거나 war 파일을 업로드해서 디플로이할 수 있습니다.
그리고 매니저에서는 다른 웹 애플리케이션을 실행/중지/리로드/언디플로이할 수 있어요~
이제부터 본론으로 들어갑니다.
제가 말씀드릴 앤트로 톰캣에 웹 애플리케이션을 디플로이하는 방법은 내부적으로 톰캣의 manager 애플리케이션을 이용합니다. 그러므로 먼저 톰캣의 manager 애플리케이션이 설정이 되어있어야 해요~!
빌드 파일에서 사용할 프로퍼티 파일은 다음과 같습니다. (sample 어플리케이션을 배포한다고 가정합니다.)
# catalina home directory
catalina.home=C:\Tomcat2
catalina.ant.jar=${catalina.home}/server/lib/catalina-ant.jar
catalina.tasks.file=catalina.tasks3
# catalina manager configurations
catalina.manager.url=http://localhost:8080/manager
catalina.manager.user.name=test4
catalina.manager.user.password=test
# application configurations
application.path=/sample5
application.context=sample.xml6
catalina.home=C:\Tomcat2
catalina.ant.jar=${catalina.home}/server/lib/catalina-ant.jar
catalina.tasks.file=catalina.tasks3
# catalina manager configurations
catalina.manager.url=http://localhost:8080/manager
catalina.manager.user.name=test4
catalina.manager.user.password=test
# application configurations
application.path=/sample5
application.context=sample.xml6
그리고 태스크 정의 파일이 필요합니다. 다음과 같은 내용으로 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
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:\Sample7" debug="0" privileged="true" reloadable="true">
<Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost.sample." suffix=".txt" timestamp="true" />
</Context>
<Context path="/sample" docBase="C:\Sample7" 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" />
</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
'개발 > 자동화' 카테고리의 다른 글
| 메이븐(Maven) 시작하기 (2/3) (4) | 2009/10/09 |
|---|---|
| 메이븐(Maven) 시작하기 (1/3) (0) | 2009/10/09 |
| 앤트(Ant)에서 톰캣에 웹 애플리케이션을 디플로이하는 방법.. (0) | 2008/06/08 |
| 앤트(Ant)에서 톰캣을 실행/중지해 보아요. (4) | 2008/06/08 |
| 앤트(Ant)의 프로퍼티 파일(.properties)의 제한에 대해서.. (0) | 2008/06/08 |
| 앤트(Ant)에서 사용자별로 다른 프로퍼티 파일을 읽어들이도록 해보아요. (0) | 2008/06/04 |

Prev
RSS FEED
