톰캣에서 서블릿 컨테이너에 웹 애플리케이션을 배포하고 관리하기 위한 설정은 "호스팅(hosting)"이라고 합니다. 특히, 'server.xml' 파일에서 '<Host>' 엘리먼트를 사용하여 웹 애플리케이션을 호스팅 하고 설정하는 것에 그에 해당합니다.
이러한 호스팅 설정은 다양한 목적으로 사용될 수 있습니다. 특히 여러 개의 도메인이나 서브도메인을 하나의 톰캣 서버에서 운영하고자 할 때, 각각을 별도의 호스트로 설정하여 구분할 수 있습니다. 이때 호스트(host)는 가상 호스트(virtual host)로도 불릴 수 있습니다.
일반적으로 사용되는 'server.xml' 설정에서 '<Host>' 엘리먼트는 다음과 같이 생겼습니다.
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
....
</Host>
- name: 호스트의 이름을 지정합니다.
- appBase: 웹 애플리케이션 파일들이 위치하는 디렉터리를 지정합니다.
- unpackWARs: WAR 파일을 풀어서 배포할지 여부를 결정합니다.
- autoDeploy: 자동으로 배포를 할지 여부를 결정합니다.
여러 개의 도메인이나 서브도메인을 하나의 톰캣 서버에서 운영하는 방법은 톰캣의 "가상 호스트" 기능을 활용하는 것입니다. 가상 호스트를 설정하면 하나의 물리적인 톰캣 서버에서 여러 도메인을 처리할 수 있습니다.
<Engine name="Catalina" defaultHost="localhost">
<Host name="domain.com" appBase="webapps_domain1" unpackWARs="true" autoDeploy="true">
...
</Host>
<Host name="sub.domain2.com" appBase="webapps_domain2" unpackWARs="true" autoDeploy="true">
...
</Host>
</Engine>
위의 예시처럼 설정하면 'domain.com' 및 'sub.domain2.com'으로 접속할 때, 각각의 도메인에 해당하는 웹 애플리케이션을 제공할 수 있습니다. 위의 예제에서는 두 개의 가상 호스트를 설정하였지만, 필요에 따라 더 많은 가상 호스트를 추가할 수 있습니다.
'<Context>' 엘리먼트는 톰캣에서 웹 애플리케이션 컨텍스트를 설정하는 데 사용되는 엘리먼트입니다. 웹 애플리케이션 컨텍스트는 특정 웹 애플리케이션과 관련된 설정을 지정하는 데 사용됩니다. '<Context>' 엘리먼트는 톰캣의 'server.xml' 파일이나 개별 웹 애플리케이션 'context.xml' 파일에 정의될 수 있습니다.
- path: 웹 애플리케이션의 컨텍스트 경로를 지정합니다. 이 경로는 URL에서 애플리케이션에 액세스 하기 위해 사용됩니다.
- docBase: 웹 애플리케이션의 루트 디렉터리를 지정합니다. 이 디렉터리에는 웹 애플리케이션의 파일과 리소스가 위치합니다.
- reloadable: 'true'로 설정하면 개발 중에 코드 또는 설정 변경이 있을 때 자동으로 웹 애플리케이션을 다시 로드합니다.
- allowLinking: 'true'로 설정하면 서블릿 컨텍스트에서 심볼릭 링크를 허용합니다.
<Context path="/myapp" docBase="myapp"/>
위에 예제 코드를 보면 '/myapp'라는 경로로 접근할 때 'myapp'이라는 웹 애플리케이션을 사용하도록 설정합니다. 'docBase' 속성은 웹 애플리케이션의 루트 디렉터리를 나타냅니다.
<Context path="/myapp" docBase="myapp" reloadable="true" />
'reloadable="true"'를 추가하면 코드 또는 설정이 변경될 때 톰캣이 자동으로 웹 애플리케이션을 다시 로드합니다.
<Context path="/myapp" docBase="myapp" allowLinking="true" />
'allowLinking="true"'를 추가하면 서블릿 컨텍스트에서 심볼릭 링크를 허용합니다. 이 속성을 사용하면 특정 웹 애플리케이션에서 서블릿 컨텍스트 외부의 리소스를 참조할 수 있는지 여부를 제어할 수 있습니다.
위의 예시에서는 '/myapp' 경로의 웹 애플리케이션에 대해 'allowLinking'을 활성화하고 있습니다. 이제 해당 웹 애플리케이션은 서블릿 컨텍스트 외부의 디렉터리에 있는 심볼릭 링크를 통해 리소스에 접근할 수 있게 됩니다.
<Context path="/myapp" docBase="myapp">
<Alias>/myapp</Alias>
<Alias>/myapplication</Alias>
<Alias>/myTest</Alias>
</Context>
'<Alias>' 엘리먼트를 사용하여 다른 경로로도 웹 애플리케이션에 액세스 할 수 있습니다. '<Alias>'를 사용하면 다양한 경로로 접근 가능하게 됩니다. 특정 웹 애플리케이션을 여러 경로에서 액세스 할 수 있도록 하기 위해 '<Alias>'를 사용할 수 있습니다. 이는 사용자가 다양한 경로를 통해 동일한 애플리케이션에 액세스 할 수 있도록 합니다.
위의 예시에서는 로컬 호스트로 해당 경로를 접근한다고 가정하면 다음과 같은 경로들이 동일한 myapp에 접근할 수 있게 됩니다.
- http://localhost:8080/myapp
- http://localhost:8080/myapplication
- http://localhost:8080/myTest
'DevOps > Tomcat' 카테고리의 다른 글
[Apache] 아파치에서 가상호스팅 설정하는 방법 - 컴도리돌이 (0) | 2024.08.12 |
---|---|
[Tomcat] 톰캣 외부 경로 파일 업로드 - 컴도리돌이 (2) | 2024.01.26 |