서론
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 "%r" %s %b" />
</Host>
</Engine>
</Service>
</Server>
결론
server.xml 파일은 Tomcat 서버의 동작을 정의하는 매우 중요한 구성 파일이다.
서버의 포트, 서비스, 커넥터, 엔진, 호스트 및 콘텍스트 등 다양한 요소를 설정할 수 있으며, 각 요소는 Tomcat 서버의 기능과 성능에 큰 영향을 미친다.
실제 운영서버 xml 파일을 살펴보면 위 예제와는 다르게 속성과 태그값이 추가적으로 많다.
안정적이고 효율적인 서버 운영을 위해 가장 이상적인 설정이 어떤 지 확인이 필요하다.
![](https://t1.daumcdn.net/keditor/emoticon/friends1/large/040.gif)
'Dev > CS' 카테고리의 다른 글
Call by Value와 Call by Reference (0) | 2024.07.29 |
---|---|
SMTP 발송 vs SMTP 릴레이(Relay) 발송: 차이점과 장점 (0) | 2024.06.24 |
[Library] 라이브러리 버전 업데이트 (0) | 2024.04.25 |
[브라우저] 크로스 브라우징 (0) | 2024.01.16 |
[WEB] HTTP 상태 코드 (0) | 2023.10.19 |