apache tomcat deployments 방식은 archive or unarchive(exploded) 형태이다.
eclipse에서 Export 선택할수 있다. (이 내용은 skipped)
deployments 방식에 잠시 가물가물해서 확인해봤더니 내용이 너무 방대하고 구체적인 설명이 없는 것 같이 테스트를 해보았다.
1. webapps 에 파일을 복사 ( archive or unarchive 상관없이) tomcat server.xml default 설정
기본적으로 tomcat을 설치한 후 webapps에 application을 복사하면 기동 될때 배포가 된다.
INFO: Deploying web application archive [/was/servers/tomcat8/webapps/test2.war]
INFO: Deployment of web application archive [/was/servers/tomcat8/webapps/test2.war] has finished in [823] ms
여기서 호기심,
webapps는 어떻게 인식을 하는 것일까?
apache.tomcat 엔진 홈 경로에 bin/catalina.sh 파일을 보면
CATALINA_BASE라는 환경변수가 있고 이 CATALINA_BASE 하위에 webapps경로를 바라보고 있다
<Host name="localhost" appBase="webapps" <<- CATALINA_BASE/webapps 라는 뜻(full path)
unpackWARs="true" autoDeploy="true">
</Host>
이렇게 deploy를 하게 되면 application 명을 따라 간다.
CATALINA_BASE/webapps 경로를 확인해보면 archive 파일이 unarchive 파일이 되어있다.
내가 만든 application 명은 test2.war이고, context는 test2가 된다.
예를 들어 호출해보면 위와 같이 deploy 했을 경우 http://localhost:8080/test2/index.jsp
2. 다른 경로에 파일을 deploy하고 싶고 archive 파일인 경우
Context를 추가해주면 된다. 간단하다.
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="false">
<Context path="" docBase="/app/test2.war" /> ( "/" </Context> 와 동일)
</Host>
위와 같은 경우에는 webapps(정확히는 CATALINA_BASE/webapps) 파일을 복사하지 않고
CATALINA_BASE/webapps 이외 별도 file or exploded 형태 application을 사용 하겠다는 의미이다.
/app/test2.war 파일을 확인해 보니 archive 는 있는데 unarchive는 없다.
unarchive가 없는 게 아니라 <host>에 appBase="webapps"가 기본적으로 설정되어 있기 때문에 ROOT 라는 directory 가 있을 것이고 unpackWARs="true" 이기 때문에 unarchive 파일이 만들어 졌다.
이 driectory가 ROOT 인 것은 path=""
즉, context가 필요 없는 경우 이렇게 설정 한다.
호출 예) http://localhost:8080/index.jsp
3. deploy는 하는데 archive 파일만 사용하고 싶은 경우
<Host name="localhost" appBase="webapps"
unpackWARs="false" autoDeploy="false">
<Context path="" docBase="/app/test2.war" />
</Host>
unpackWARs="false" 하면 된다.
unarchive 파일(ROOT)은 어디에도 없다. 하지만 deploy는 잘된다.
tomcat에 Context 설정은 문서를 참고하면 많은 옵션을 확인 할 수 있다.
http://tomcat.apache.org/tomcat-8.5-doc/config/context.html
댓글 없음:
댓글 쓰기