Backend/Server

Tomcat appBase, docBase

findmypiece 2021. 4. 20. 12:39
728x90

로컬에서 Tomcat 을 구동하고 http://localhost:8080/ 로 접근했을 때 화면에 보여줄 자원(html 등) 을 찾는 기본적으로 경로는 Tomcat 설치 디렉토리 아래 있는 webapps/ROOT 디렉토리이고 이를 Document Root라고 부른다. 이에 대한 설정은 conf/server.xml 에서 확인할 수 있는데 아래와 같다.

 <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
 	...
 </Host>            

<Host> 태그 하위에는 <Context> 태그가 포함될 수 있는데 위와 같이 생략되어 있다면 기본값은 ROOT 이기 때문에 Document Root 는 webapps/ROOT 가 된다. 즉, 이는 아래와 같다.

 <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
    <Context path="" docBase="ROOT" reloadable="true"/>
	...
 </Host>

 

여기에서 appBase 는 Tomcat 에서 기본경로이고 docBase 는 Tomcat 안에서 내부적으로 나눠지는 경로이다. 도서관을 예로 들면 도서 위치가 appBase 이고 책의 목차가 docBase라고 생각하면 된다.

 

appBase와 docBase는 위와 같이 상대경로를 지정할 수도 있고 절대경로를 지정할 수도 있다. 위와 같이 상대경로로 지정할 경우 appBase는 Tomcat 설치 디렉토리를 기준으로 하고 docBase는 appBase 를 기준으로 한다. 

 

그렇다면 Document Root 를 webapps/ROOT 이 아닌 아예 Tomcat 외부 경로로 지정하고 싶다면 어떻게 해야 할까? 예를 들어 /home/public_html/ 을 Document Root 로 설정하고 싶다고 가정해보자. 방법은 두가지이다.

 

1. appBase, docBase 를 모두 수정하는 방법

 <Host name="localhost"  appBase="/home"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
    <Context path="" docBase="public_html" reloadable="true"/>
	...
 </Host>

 

2. docBase 만 모두 수정하는 방법

 <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
    <Context path="" docBase="/home/public_html" reloadable="true"/>
	...
 </Host>

 

2번과 같이 docBase에서 절대경로를 지정할 경우 appBase 설정은 무시된다.

728x90

'Backend > Server' 카테고리의 다른 글

Apache mod_proxy 로 HA 처리하기  (0) 2021.06.07
Tomcat 로그 한글 깨짐 현상 해결하기  (0) 2021.06.04
httpd-vhosts.conf mod_rewrite  (0) 2021.03.15
httpd-default.conf 설정 분석  (0) 2021.03.15