📌 들어가며

Tomcat을 운영·튜닝하거나 문제를 해결할 때 어느 디렉토리에 어떤 파일이 있는지, 각 파일이 어떤 역할을 하는지를 알아두면 도움이 됩니다. 이 글은 Apache Tomcat의 디렉토리 구조와 주요 디렉토리·파일의 역할을 정리한 자료입니다.

💡 이런 분들께 추천합니다

  • Tomcat 디렉토리·설정 파일 역할을 한 번에 정리하고 싶은 분
  • WAS 운영·배포 시 경로와 설정을 찾는 분
  • server.xml, web.xml 등 핵심 설정 파일 위치를 알고 싶은 분

🧩 개념 설명 / 배경 지식

Tomcat은 Java 서블릿/JSP를 실행하는 웹 애플리케이션 서버(WAS)입니다. /bin, /conf, /webapps, /logs 등 디렉토리별로 스크립트·설정·애플리케이션·로그가 구분되어 있습니다. 이미 구조를 알고 있다면 다음 섹션으로 넘어가도 됩니다.

🔍 본론: Tomcat 구조 및 파일 역할

1. Tomcat 디렉토리 구조


/bin startup, shutdown, 기타 스크립트가 존재한다. sh 파일(유닉스 시스템)과 bat 파일(윈도우 시스템)은 기능적으로 동일하다.
/conf 설정 파일과 DTD와 연관된 파일이 존재한다. 가장 중요한 파일인 server.xml이 있으며 이 파일은 컨테이너의 주요 설정 파일이다.
/logs 기본적으로 이 디렉토리에 로그 파일이 생성된다.
/webapps 기본 webapps가 위치하는 디렉토리이다.
/lib classpath에 추가되는 리소스가 위치한 디렉토리이다.
/work Jsp 파일을 서블릿 형태로 변환한 java 파일과 class 파일이 저장되는 디렉토리이다.
/temp JVM에 사용되는 임시 디렉토리이다.

2. bin 디렉토리 파일


bat 파일은 윈도우에서 실행하는 batch 파일, sh 파일은 유닉스 계열에서 실행하는 shell script 파일이다.

bootstrap.jar Tomcat 서버가 구동될 때 사용되는 main() 메소드가 포함되어 있으며 클래스 로더가 클래스를 구현하는데에 필수적이다.
tomcat-juil.jar 로깅을 구현하는 java.util.logging API를 포함하고 있는 클래스이다.
common-daemon.jar Apache Commons Daemon 프로젝트에 필요한 클래스이다. Catalina.sh 파일에 의해 빌드되지 않으며 bootstrap.jar 파일에 의해 참조된다.
catalina.sh CATALINA 서버의 제어 스크립트이다.
ciphers.sh 지정된 알고리즘을 사용하는 다이제스트 암호를 설정하는 스크립트이다.
configtest.sh CATALINA 서버의 설정 스크립트이다.
daemon.sh Common Daemon에 사용되는 스크립트이다.
digest.sh 지정된 알고리즘을 사용하는 다이제스트 암호를 설정하는 스크립트이다.
makebase.sh Tomcat 실행에 필요한 분산 디렉토리 구조를 생성하는 스크립트이다.
setclasspath.sh JAVA_HOME 또는 JRE_HOME이 세팅되지 않았을 경우 세팅한다.
shutdown.sh CATALINA 서버를 중지하는 스크립트이다.
startup.sh CATALINA 서버를 시작하는 스크립트이다.
tool-wrapper.sh 커맨드 라인 도구에서 사용되는 Wrapper 스크립트이다.
version.sh Tomcat의 정보를 표시해주는 스크립트이다.

3. conf 디렉토리 파일


catalina.policy Tomcat의 보안 정책을 설정하는 파일이다. Catlina가 –security 옵션으로 실행될 때 시행되는 보안 정책을 설정할 수 있다.
catalina.properties 서버를 시작할 때 검색하는 서버, 공유 로더, JAR 등의 정보를 포함한다.
context.xml 세션, 쿠키 저장 경로등을 지정하는 설정 파일이다.
jaspic-providers.xml 사용자 인증 제공 방법에 대해 정의한 파일
logging.properties Tomcat 인스턴스의 로깅 설정 파일이다. tomcat-juli.jar 라이브러리를 활용하여 로깅 서비스를 제공한다.
server.xml Tomcat 설정에서 가장 중요한 파일이다. Service, Connector, Host 등과 같은 주요 기능을 설정할 수 있다.
tomcat-users.xml Tomcat의 manager 기능을 사용하기 위해 사용자 권한을 설청하는 파일이다.
web.xml Tomcat의 환경설정 파일이며 서블릿, 필터, 인코딩 등을 설정할 수 있다.

4. lib 디렉토리 파일


annotations-api.jar 자바EE 어노테이션 클래스 파일
catalina.jar Tomcat의 Catalina 서블릿 컨테이너를 구현하는 파일
catalina-ant.jar Tomcat Catalina Ant 작업 파일
catalina-ha.jar 고가용성 패키지 파일
catalina-storeconfig.jar 서버 상태의 흐름을 XML 설정파일로 생성한다.
catalina-tribes.jar 그룹 커뮤니케이션 패키지 파일
ecj-*.jar 이클립스 JDT 자바 컴파일러 파일
el-api.jar EL 3.0 API 파일
jasper.jar Tomcat Jasper JSP 컴파일러와 런타임 파일
jasper-el.jar Tomcat Jasper EL 구현 파일
jsp-api.jap JSP 2.3 API 파일
servlet-api.jar Servlet 4.0 API 파일
tomcat-api.jar Tomcat에 의해 정의되는 몇몇 인터페이스 파일
tomcat-coyote.jar Tomcat connector와 유틸리티 클래스 파일
tomcat-dpcp.jar 데이터베이스 커넥션 풀을 구현하는 파일
tomcat-i18n-**.jar Tomcat 언어 패키지 파일
tomcat-jdbc.jar Tomcat JDBC pool로 알려진 대체 데이터베이스 커넥션 풀을 구현하는 파일
tomcat-util.jar Apache Tomcat의 다양한 컴포넌트에서 사용되는 일반 클래스 파일
tomcat-websocket.jar WebSocket 1.1 구현 파일
websocket-api.jar Websocket 1.1 API 파일

⚠️ 주의사항

  • server.xml 수정 후 반드시 설정 검증과 재시작 순서를 지키세요. /work·/temp는 재시작 시 정리될 수 있으니 중요 데이터는 두지 마세요.

✅ 실습 / 적용 예시

이 글은 구조·파일 역할 참고 자료에 초점을 둡니다. 실습은 Tomcat을 설치한 뒤 위 디렉토리를 열어 보며 각 파일을 확인해 보시면 됩니다.

🚧 트러블슈팅 / 자주 묻는 질문

Q. server.xml과 web.xml 중 뭘 먼저 봐야 하나요?
A. 전역 설정(포트, Connector, Host)은 server.xml, 애플리케이션별 서블릿·필터·에러 페이지는 WEB-INF/web.xml을 보면 됩니다. Q. bin의 sh와 bat 차이는?
A. 기능은 동일하고, sh는 유닉스/리눅스, bat는 Windows용입니다.

📝 마무리

  • Tomcat은 /bin(스크립트), /conf(설정), /webapps(애플리케이션), /logs(로그) 등으로 역할이 나뉩니다.
  • server.xml이 컨테이너의 핵심 설정 파일이며, web.xml에서 서블릿·에러 페이지 등을 설정합니다.
  • 배포·운영 시 위 표를 참고해 필요한 파일만 수정하시면 됩니다.

댓글남기기