본문 바로가기
SW 프로그래밍/Web Service

Tomcat 폴더 구조와 설정파일

by N2info 2024. 11. 27.

개요

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

 

Tomcat 폴더 구조와 설정 파일

개요 사이트를 운영하다 보면 서버 단위에서 조정해 줘야하는 일이 생긴다. 예를 들어 Connection Pool Size, TimeOut conf, log 파일 생성 주기 및 명칭 등.. 늘 필요한 부분만 확인해서 적용해 주곤해서 기

cassandra.tistory.com