[Tomcat] 구조 및 파일 역할 정리
📌 들어가며
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에서 서블릿·에러 페이지 등을 설정합니다.
- 배포·운영 시 위 표를 참고해 필요한 파일만 수정하시면 됩니다.
댓글남기기