■ server.xml에 의한 Tomcat의 기본 설정
$CATALINA_HOME/conf/server.xml은 Tomcat의 메인 설정 파일로 Tomcat 기동시에 참조 된다.
$CATALINA_HOME/conf/ 디렉토리에는 디폴트 server.xml 이외에 최소한의 설정만으로 구성된
server-minimal.xml이 준비되어 있다. 새로 서버를 설정하고자 할 경우에는 server-minimal,xml의 이름을 변경하여 사용하면 편리하다.
■ server.xml의 구조
Tomcat은 몇개의 구성요소로 이루어져 있으며, server.xml에서는 XML의 요소를 통해 구성요소를 정의하고 있다. server.xml의 요소는 다음과 같이 트리구조를 갖고 있다.
<Server>
|
+---<Service>
|
+---<Connector>
|
+---<Engine>
|
+---<DefaultContext>
|
+---<Realm>
|
+---<Logger>
|
+---<Host>
|
+---<Context>
|
+---<Value>
|
+---<Realm>
|
+---<Logger>
상위의 속성은 자동적으로 하위의 요소에 계승된다. 예를 들어 <Host>의 구성요소 <Logger>의 속성은 아무것도 지정하지 않은 경우 <Engine>의 구성요소 <Logger>의 설정이 사용된다. 변경이 필요한 경우에는 <Host>의 구성요소 <Logger>에 별도의 설정을 함으로서 상위의 설정을 덮어 쓸수 있다.
1. <Server>요소
Tomcat 서버 구성요소의 정의 부분이다. 기본값은 <Server port="8005" shutdown="SHUTDOWN"> 로 되어 있으며, 포트 8005를 감시하고 shutdown 명령어를 접수하도록 설정되어 있다. 서버에서는 복수의 서비스를 관련 지울 수 있다.
2. <Service>요소
<Service> 구성요소를 정의하고 있다. <Service>는 뒤에 기술 할 <Engine>과 그것에 관련된 모든 <Connector>를 그룹화 한 것이다. 기본값은 <Service name="Catalina">로 되어 있다.
name 속성에서 Catalina 라고 하는 이름으로 서비스가 정의 되어 있고, 에러 로그 및 관리툴은 이 이름으로 식별합니다.하나의 서버에 복수의 서비스를 정의하는 경우, 다른 name 속성을 기입할 필요가 있다.
<Service>는 <Engine>과 하나 이상의 <Connector>를 관련짓는 것이 가능하다. <Service>와 <Engine>의 관계는 1:1 이다.
3. <Service>요소
<Engine>은 servlet 컨테이너의 인스턴스를 표시하며, <Connector>로부터 보내진 요구를 처리한다. 기본값은 <Engine name="Catalina" defaultHost="localhost">로 되어 있다.
name 속성은 <Engine>의 이름을 표시하며, 에러 로그 및 관리툴은 이 이름으로 <Engine>을 식별한다.
defaultHost 속성은 server.xml에 정의 되어 있지 않은 <Host>에 요구가 있을 경우 발송되는 가상호스트를 지정한다. <Engine>에는 하나 이상의 <Host>가 관련지어져 있다.
4. <Connector>요소
요구를 <Engine>에 건네 주는 역할을 하는것이 <Connector>다. <Service>는 하나 이상의 <Connector>를 갖을 필요가 있다.
사용자는 HTTP 또는 HTTPS/SSL등 여러가지 방법으로 <Engine>에 요구를 보낸다. 이것들의 접속 요건의 처리는 <Connector>구성요소에 맡겨진다. 각 프로토콜에 대해 복수의 <Connector>를 갖는 것으로서 어떤 접속에서 요구가 보내져와도 <Engine>이 동일하게 처리하고, 응답을 <Connector>에 맡길 수 있다.
Tomcat에는 몇개의 표준 <connector>가 탑재되어 있으며, 기본값은 HTTP 1.1 <Connector>와 AJP <Connector>가 준비되어 있다.
5. <DefaultContext>요소
모든 <Context>공통의 정의부. 기본적으로는 설정되어 있지 않다.
6. <Realm>요소
<Realm>는 보안을 위해 role명과 사용자명, 비밀번호의 맵핑을 외부의 데이타베이스로 부터 가져오는 장치다. Tomcat은 UserDataBase, Memory, JDBC, JNDI등 몇개의 <Realm>을 가지고 있다.
각 <Realm>의 차이는 어디로 부터 정보를 가져왔는가의 차이밖에 없다. 기본값으로는 UserDataBsase이외의 <Realm>은 주석 처리되어 무효로 되어 있다.
7. <Logger>요소
<Logger>는 로그파일의 작성 방법을 설정 한다. <Logger>는 server.xml 구조에서 보듯이 <Engine>레벨에서 설정할 수 있다.
<Logger className="org.apache.catalina.logger.FileLogger">
|
위의 <예>에서는 Tomcat의 FileLogger 클래스를 사용, prefix, suffix, timestamp 속성에서 로그파일명을 정의하고 있다. 이 경우, 로그파일은 [server-log.2008_08_04.txt]과 같은 형식으로 $CATALINA_HOME/logs 디렉토리에 출력된다.
8. <Host>요소
<Engine>에 관련된 가상호스트를 정의 한다. 기본값으로는 다음과 같이 되어 있다.
<Host name="localhost" appBase="webapps" |
가상 호스트명을 "localhost"로 설정하고 appBase 속성에서 어플리케이션이 탑재되어 있는 디렉토리를 "webapps"로 설정하고 있다. 별도로 unpackWARs 속성에서는 WAR파일을 전개하고나서 실행할 것인지의 여부를, autoDeploy 속성에서는 Tomcat이 기동중에 웹어플리케이션을 배치한 경우에 자동으로 읽어 들일 것인지의 여부를 설정할 수 있다.
9. <Value>요소
<Value>는 Tomcat 특유의 기능이다. <Value>는 상위 구성요소로의 필터 처리를 담당한다. <Engine>, <Host>, <Context>와 관련짓는 것이 가능하다. 또, Tomcat에는 표준으로 다음과 같은 몇개의 <Value>가 준비되어 있다.
AccessLogValue
<Valve className="org.apache.catalina.valves.AccessLogValve" |
RemoteAccessValve
<Valve className="org.apache.catalina.valves.RemoteAddrValve" |
SingleSignOnValue
<Valve className="org.apache.catalina.authenticator.SingleSignOn"/>
|
RequestDumpValue
<Valve className="org.apache.catalina.valves.RequestDumperValve"/> |
AccessLogValue 의 <예>에서는 $CATALINA_HOME/logs 디렉토리에 server-log-2008-08-04.txt 의 형식으로 로그파일을 작성한다.
RemoteAccessValue는 접근을 IP주소 단위로 제한한다. 지정주소에서의 접근을 허가, 거부를 설정할 수 있다. <예>에서는 로컬 IP주소 192.168.0.1로 부터의 접근을 허가하고 있다. 또 RemoteHostValue를 사용하면 호스트 단위로 접근제한을 설정할 수 있다.
SingleSignOnValue는 요구와 응답의 헤더와 쿠키를 <Logger>로 설정한 로그파일이 작성된다.
10. <Context>요소
<Host>에는 웹어플리케이션의 복수개의 <Context>가 관련지어져 있다. <Context>요소에는 웹어플리케이션의 일련의 설정 프로퍼티가 들어간다. 웹어프리케이션 배치에서 소개 한대로 이 설정은 웹어플리케이션마다에 설정파일을 가질 수 있다.
Tomcat 설정과 관련된 자세한 내용은 Tomcat 홈페이지에서 확인하시기 바랍니다.
'Programming' 카테고리의 다른 글
인텔리J 시작하기 Part1~Part4 (0) | 2015.05.21 |
---|---|
개발자 경력 관리에 대해서.. (1) | 2015.05.07 |
세션 클러스터링(Session clustering) (0) | 2014.09.26 |
Improved Persistent Login Cookie Best Practice (0) | 2014.07.21 |
좋은 프로그래머가 되는 24가지 방법 (0) | 2014.07.10 |