출처 : http://www.sjune.net/archives/807
톰캣 6.x 버전부터는 가상호스트 설정을 server.xml 에서 하지 않도록 권고하고 있습니다. 톰캣공식문서를 보면 그 이유가 나오는데요. Context 설정을 수정하기 위해 server.xml 파일을 변경하고 이를 반영하려면 서버를 재시작해야만 하는 불편함이 있기 때문이라고 합니다.
그러면 톰캣 6.x이상부터는 어떻게 설정하냐구요? 설정 방법은 이 위키문서를 보면 자세히 나와있으니 참고해주시구요.. ^^
대신 가상호스트를 사용할 때 주의할 점을 적어보겠습니다. 오늘 제가 삽질한 부분이죠.
바로 $CATARINA_HOME/conf/Catarina/{가상호스트}/ROOT.xml 을 사용해서 컨텍스트를 설정하려는 경우 ROOT.xml 파일 안의 <Context docBase…”” />는 server.xml에서 지정한 Host의 appBase 아래 경로로 인식하지 않는다는 점입니다.
파일을 보며 설명해보겠습니다.
아래는 server.xml의 Host 설정 부분입니다. 보시다시피 host 의 이름은 sjune.dev 이며, appBase는 devapps로 지정하고 있습니다. server.xml 에 설정되는 경로는 $CATARINA_HOME이 루트가 되어 상대경로로 잡히므로 devapps의 실제로 $CATARINA_HOME/devapps가 되구요.
1 2 3 4 | ... < Host appBase = "devapps" autoDeploy = "true" name = "sjune.dev" unpackWARs = "true" xmlNamespaceAware = "false" xmlValidation = "false" /> ... |
이 때! $CATARINA_HOME/conf/Catarina/{가상 호스트}/ROOT.xml 파일에서 아래처럼 docBase를 testProject로 설정해도 최종 경로를 devapps/testProject로 바라보지 않습니다. 뿐만 아니라 톰캣이 컨텍스트 경로를 제대로 찾지 못해서 허둥지둥하는 모습까지 보게 되죠. -_-;
1 2 3 4 5 | <? xml version = "1.0" encoding = "UTF-8" ?> < Context path = "" docBase = "testProject/" reloadable = "true" /> |
대신 아래처럼 appBase경로를 벗어난 다른 경로(혹은 절대경로)를 입력해야 docBase경로를 제대로 인식하게 됩니다.
1 2 3 4 5 | <? xml version = "1.0" encoding = "UTF-8" ?> < Context path = "" docBase = "/myDev/tomcatApps/sjune.dev/testProject/" reloadable = "true" /> |
server.xml 처럼 <Host> 아래 <Context>를 넣는 방법과 동일하게 생각해서 ROOT.xml 파일도 같은 방식으로 구동할거라 생각했는데.. 이게 되지 않는다는 걸 몰라서 한참 헤맸네요 ^^;
사실 가상호스팅은 톰캣보다 아파치로 설정하는 게 대부분이지만, 혹시라도 저처럼 server.xml 설정방식과 착각하여 괜히 삽질하는 사람이 있지 않을까 싶어 이렇게 포스팅을 하게 됩니다. (설마 지구에 저 혼자 이 삽질을 해본 건 아니겠죠?;)
Reference
http://tomcat.apache.org/tomcat-6.0-doc/virtual-hosting-howto.html
http://tomcat.apache.org/tomcat-6.0-doc/config/context.html#Introduction
http://wiki.apache.org/tomcat/TomcatDevelopmentVirtualHosts
Tagged on: tomcat
'Tomcat > Explain' 카테고리의 다른 글
톰캣(tomcat) Connector 설정 (0) | 2015.11.19 |
---|---|
Tomcat 6.0 사이트 여러개 운영 (0) | 2015.11.19 |