개요
사이트를 운영하다 보면 서버 단위에서 조정해 줘야하는 일이 생긴다. 예를 들어 Connection Pool Size, TimeOut conf, log 파일 생성 주기 및 명칭 등.. 늘 필요한 부분만 확인해서 적용해 주곤해서 기초 개념 정리가 필요할 것 같아 남겨놓는다.
1. Tomcat ?
Tomcat은 HTTP(HyperText Transfer Protocol)서버이다. 또한 Servlet container 이기도 한데, Java Servlet을 실행하고 JSP (JavaServer Pages) 및 JSF (JavaServerFaces)를 Java Servlet으로 변환할 수 있기 때문이다. 즉, Java EE Container 의 기능을 포함한 Web Application Server (WAS) 를 말한다.
현재 릴리즈된 버전은 v9.0.10 으로 JDK 8 이상만을 지원한다. 변경 내용은 이쪽으로
Tomcat의 핵심 단위모듈(Core Component)
Tomcat은 다음과 같은 컴포넌트로 구성된다. 참고자료
- Catalina : Servet Container : Java EE Container. Servlet-JSP Processing (Realm)
- Coyote : HTTP 1.1 protocol Web Server : Web Browser 와 Server 간의 HTTP 통신(Req/Res)을 담당
- Jasper : JSP Engine : JSP의 실행/해석
- Cluster : Load-Balancing, Session-Clustering
이를 그림으로 표현하면 다음과 같다.
이미지 출처 : https://www.slideshare.net/jieunsys/ss-56543446
Tomcat Architecture
아키텍처를 이해하기엔 내가 너무 부족하다. 다만 Request 요청시 Valve를 통해 Server → Service → Engine → Host → Context → Wrapper 순을 거쳐 Servet/JSP 가 실행된다는 정도만 적어놓는다.
/component
- Server : Server = Catalina = Tomcat Instance
- Context : Web Application (webapps)
- Listeners : Tomcat Lifecycle Action
- Manager : Http Session Manager
- Logger : JULI
- Valve : Container Request Processing (Pipeline)
여기까지 Tomcat의 동작 및 개념을 나타내는 주요한 컴포넌트에 대한 설명이었다.
아래는 폴더구조와 각 폴더에 대한 설명이다.
2. Tomcat 폴더
- bin : Tomcat 바이너리와 시작 스크립트.
- conf : webapps 에 적용하는 전역 설정. 설치시 다음을 기본으로 제공
- 정책파일(Policy File) : catalina.policy
- 등록정보파일(Properties File) : catalina.properties, logging.properties
- 구성파일 (Configuration XML File)
- server.xml (Tomcat 주 설정 파일)
- web.xml (웹 어플리케이션 배포 descriptors)
- context.xml (global Tomcat-specific configuration)
- tomcat-users.xml (인증 및 접근제어를 위한 유저/패스워드/권한 데이터베이스
- lib : tomcat에서 사용하는 jar 파일 모음
- log
- 엔진 로그 : Catalina.{yyyy-mm-dd}.log
- 호스트 로그 : localhost.{yyyy-mm-dd}.log
- 그외 어플리케이션 로그 : manger and host-manager , Accescc log
- webapps : 기본디렉토리 (localhost)
- work : 컴파일된 파일
- temp : 톰캣 실행되는 동안 임시 파일 위치
위 중 모든 폴더를 다 분석할 순 없고 중요한 두가지 폴더만 정리한다.
/bin
- catalina - startup.sh나, shutdown.sh을 실행하게 되면 내부적으로 catalina가 실행된다. 즉 톰캣이 실행 및 정지가 된다.
- startup - 실행. 내부적으로 catalina.bat를 실행
- shutdown - 정지. 내부적으로 catalina.bat를 실행
/conf
- Sever.xml - 서버설정 (커넥션명, 호스트명, 포트번호 등의 설정)
- web.xml - 가장 먼저 읽는 파일. DefaultServlet지정 및 Servlet-mapping
- context.xml - WEB-INF/web.xml 을 읽도록 설정되어있음
아래는 톰캣의 주요한 설정파일에 대한 설명이다.
3. 주 설정파일
여기서는 server.xml 과 web.xml 에서 설정 가능한 옵션을 기술한다. 옵션별 설정방법을 기술하기엔 너무 문서가 길어지고 설정방법을 알고 싶을땐 링크 참조하길 바란다.
1) Main Configuration File : conf/server.xml
Server.xml 은 Tomcat의 주설정 파일로 접근/접속에 관한 설정이 주를 이룬다. 설치시 <CATALINA_HOME>의 경로가 되며 설정할 수 있는 항목은 다음과 같다.
- 설정항목
- Server port
- Listener
- Global Naming Resources : JNDI(Java Naming and Directory Interface) 정의
- Services Name
- Connectoer
- Containers
- Engine
- Realm
- Host
- Cluster
- Valve
2) Other Configuration Files: web.xml, context.xml, tomcat-users.xml
서브 설정 파일. 주목할만한 파일은 web.xml 로 uri 요청시 어떤식으로 반응할지에 대한 설정이 주를 이룬다. 이 파일은 톰캣 내에 2개의 파일이 존재한다.
- <CATALINA_HOME>\conf\web.xml : 전역 설정 파일
- ContextRoot\WEB-INF\web.xml : 지역 설정 파일
아래는 전역설정파일인 <CATALINA_HOME>\conf\web.xml 의 설정 항목을 기술한다.
- 설정항목
- 디렉토리 목록 : url 접근시 디렉토리 목록의 사용여부 결정
- 웰컴 페이지 설정 : url 접근시 사용할 첫 페이지를 설정
- 자동 서블릿 리로드 : 서블릿이 재컴파일 되었을 때 자동으로 리로드할지 여부를 설정
- 특정 Webaapp 에 대한 디렉토리 목록 사용설정
- 웹 컨텍스트 루트 디렉토리 및 요청 URL 설정
- 기본 webapps 디렉토리 변경
원본 : https://cassandra.tistory.com/4