728x90
반응형

서론

Apache-Tomcat은 널리 사용되는 오픈 소스 서블릿 컨테이너다.

Java 기반 Web Application을 구동하는데 필수적인 역할을 한다.

톰캣 설정 파일 중 하나인 server.xml은 서버의 다양한 요소와 동작을 정의하는 데 사용된다.

예를 들자면 포트, 이벤트 리스터, DB 접속정보, 웹 리소스 참조경로 등 다양한 정보를 설정가능하다.

그럼 server.xml에 대해서 알아보자.

 

server.xml 위치

톰캣의 server.xml 파일은 보통 conf 폴더 내에 위치하게 된다.

 

본론

1. <Server>

server는 톰캣 서버의 최상위 요소로, 서버의 전체 설정을 정의한다.

<Server port="8005" shutdown="SHUTDOWN">

- port: 톰캣이 종료 명령을 수신할 포트 번호 (기본값은 8005)

- shutdown: 톰캣을 종료하기 위한 명령어 (기본값은 SHUTDOWN)

 

2. <Service>

Service 요소는 하나 이상의 커넥터(Connector)와 하나의 엔진(Engine)을 그룹화하는 요소다.

여러 서비스를 정의할 수 있으며, 각각의 서비스는 별도의 포트를 통해 제공될 수 있다.

<Service name="Catalina">

- name: 서비스 이름 (보통 Catalina라는 기본값 사용)

 

3. <Connector>

Connector 요소는 클라이언트 요청을 수신하고, 이를 처리할 엔진으로 전달하는 역할을 한다.
HTTP, HTTPS, AJP 등의 프로토콜을 설정할 수 있다.

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />

- port: 이 커넥터가 요청을 수신할 포트 번호
- protocol: 사용할 프로토콜이다. 예를 들어, HTTP/1.1의 경우 HTTP/1.1, AJP의 경우 AJP/1.3
- connectionTimeout: 연결 타임아웃 시간(밀리초).
- redirectPort: 이 커넥터에서 SSL이 필요할 때 리디렉션할 포트 번호

 

4. <Engine>

Engine 요소는 서비스 내에서 하나 이상의 호스트(Host)를 포함하는 핵심 컴포넌트

<Engine name="Catalina" defaultHost="localhost">

- name: 엔진명
- defaultHost: 기본 호스트 이름으로 <Host> name 속성과 일치해야한다.

 

5. <Host>

Host 요소는 엔진 내에서 특정 도메인 이름과 연관된 웹 애플리케이션을 정의

<Host name="localhost" appBase="webapps"
      unpackWARs="true" autoDeploy="true">

- name: 호스트의 이름
- appBase: 웹 애플리케이션의 기본 디렉터리
- unpackWARs: WAR 파일을 자동으로 압축 해제할지 여부
- autoDeploy: 새로운 애플리케이션이 자동으로 배포될지 여부

 

6. <Context>

Context 요소는 웹 애플리케이션의 개별 설정을 정의한다. 각 Host 요소 내에 여러 개의 <Context>를 정의할 수 있다.

<Context path="" docBase="/home/test/WebContent" />

- path: 애플리케이션의 URL 패턴
- docBase: 애플리케이션의 루트 디렉토리

 

7. 예제

<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN">
  <Service name="Catalina">
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

    <Engine name="Catalina" defaultHost="localhost">

      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>

      <Host name="localhost" appBase="webapps"
            unpackWARs="true" autoDeploy="true">

        <Valve className="org.apache.catalina.valves.AccessLogValve"
               directory="logs" prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
               
      </Host>
    </Engine>
  </Service>
</Server>

 

결론

server.xml 파일은 Tomcat 서버의 동작을 정의하는 매우 중요한 구성 파일이다.
서버의 포트, 서비스, 커넥터, 엔진, 호스트 및 콘텍스트 등 다양한 요소를 설정할 수 있으며, 각 요소는 Tomcat 서버의 기능과 성능에 큰 영향을 미친다.
실제 운영서버 xml 파일을 살펴보면 위 예제와는 다르게 속성과 태그값이 추가적으로 많다.
안정적이고 효율적인 서버 운영을 위해 가장 이상적인 설정이 어떤 지 확인이 필요하다.


728x90
반응형