개요

사이트를 운영하다 보면 서버 단위에서 조정해 줘야하는 일이 생긴다. 예를 들어 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 디렉토리 변경

참고자료

http://www.ntu.edu.sg/home/ehchua/programming/howto/Tomcat_More.html

https://tomcat.apache.org/tomcat-7.0-doc/api/index.html

https://www.slideshare.net/jieunsys/ss-56543446

반응형

BELATED ARTICLES (관련글)

more