반응형
소개
Apache Tomcat은 웹 애플리케이션을 실행하기 위한 오픈 소스 서블릿 컨테이너입니다.
이는 Java Servlet 및 JavaServer Pages (JSP)를 실행하는 데 사용되며, Java EE (Enterprise Edition)의 일부입니다.
Tomcat은 다양한 운영 체제에서 실행될 수 있으며, 웹 서버와 같은 역할을 수행하여 클라이언트의 요청을 처리하고 동적인 콘텐츠를 생성하는 데 사용됩니다.
아키텍처
- Connector:Connector는 클라이언트의 요청을 받아들이고 처리하는 역할을 합니다. 일반적으로 HTTP 프로토콜을 다루는데, 이를 위해 HTTP Connector가 사용됩니다. 그 외에도 AJP (Apache JServ Protocol) 등 다양한 Connector가 제공됩니다. Connector는 요청을 받아들이고 해당 요청을 처리할 서블릿이나 JSP로 전달합니다.
- Catalina:Catalina는 Tomcat의 핵심 컴포넌트로, 서블릿 컨테이너와 JSP 컨테이너를 제공합니다. Catalina는 웹 애플리케이션의 생명 주기를 관리하며, 요청이 들어올 때 해당 요청을 적절한 서블릿 또는 JSP로 라우팅합니다.
- Servlet Container:서블릿 컨테이너는 Java Servlet의 수명 주기를 관리하고 요청에 대한 서블릿의 실행을 담당합니다. 서블릿은 동적인 웹 콘텐츠를 생성하는데 사용되며, 서블릿 컨테이너는 이러한 서블릿을 관리하고 실행합니다.
- JSP Container:JSP 컨테이너는 JavaServer Pages (JSP)를 처리하고 실행합니다. JSP는 HTML 코드 안에 Java 코드를 포함하여 동적인 웹 페이지를 생성하는 데 사용됩니다. JSP 컨테이너는 JSP를 서블릿으로 변환하고 실행합니다.
- Realm:Realm은 Tomcat이 사용자 인증 및 권한 부여를 어떻게 처리할지 정의하는 컴포넌트입니다. 사용자 데이터베이스, LDAP 서버, JDBC 등 다양한 백엔드 시스템과 통합할 수 있습니다.
- Logger:Logger는 Tomcat에서 로깅을 처리하는데 사용되는 컴포넌트입니다. 로그는 Tomcat의 동작 및 상태에 대한 정보를 기록하는 데 사용됩니다.
- Valve:Valve는 요청을 처리하기 전후에 추가적인 기능을 제공하는데 사용되는 컴포넌트입니다. 예를 들어, 인증, 권한 부여, 로깅 등을 처리할 수 있습니다.
- AJP와 SSL:
- SSL (Secure Sockets Layer):Tomcat에서 SSL을 사용하려면, HTTP Connector를 SSL로 구성해야 합니다. 기본적으로 8443 포트를 사용하며, 키스토어 파일과 암호를 지정해야 합니다.
- AJP (Apache JServ Protocol):AJP는 웹 서버 (예: Apache HTTP Server)와 웹 어플리케이션 서버 (예: Tomcat) 간의 효율적인 통신을 위한 프로토콜입니다.AJP를 사용하면 정적 파일을 웹 서버가 처리하고 동적 콘텐츠 (서블릿 및 JSP)는 Tomcat이 처리하도록 구성할 수 있습니다.
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="경로/keystore.jks" keystorePass="키스토어_비밀번호"
keyAlias="키_별칭"/>
특징
- Servlet 및 JSP 지원: Tomcat은 Java Servlet 및 JavaServer Pages (JSP)를 실행할 수 있는 환경을 제공합니다. 이를 통해 동적인 웹 애플리케이션을 개발하고 실행할 수 있습니다.
- 경량성: Tomcat은 경량이며 빠르게 시작할 수 있는 특징이 있습니다. 이는 단독으로 사용되거나, Apache나 Nginx와 같은 웹 서버와 연동하여 사용될 수 있습니다.
- 오픈 소스: Tomcat은 Apache 소프트웨어 재단에서 개발되며, 오픈 소스 라이선스인 Apache License, Version 2.0을 따릅니다. 이는 무료로 사용하고 수정할 수 있다는 것을 의미합니다.
- 모듈성: Tomcat은 모듈화된 아키텍처를 가지고 있어 필요에 따라 다양한 기능을 확장하거나 추가할 수 있습니다. 예를 들어, 추가적인 기능을 제공하는 확장 모듈을 설치할 수 있습니다.
- 자체 웹 서버: Tomcat에는 자체 내장 웹 서버가 포함되어 있습니다. 따라서 단독으로 실행되거나 외부 웹 서버와 연동하여 사용될 수 있습니다.
- 자동 배포 및 재시작: Tomcat은 애플리케이션을 자동으로 배포하고, 변경된 사항을 감지하여 자동으로 다시 시작할 수 있는 기능을 제공합니다.
일반적으로 Tomcat은 자바 웹 애플리케이션을 실행하는 데 매우 효과적이며, 많은 웹 애플리케이션 및 서비스에서 사용되고 있습니다.
설정
- server.xml:
- conf 디렉토리에 위치한 server.xml 파일은 Tomcat 서버의 기본 구성 파일입니다.
- 포트, 커넥터, 가상 호스트 및 다양한 서비스를 정의하는 데 사용됩니다.
- web.xml:
- 각 웹 애플리케이션의 WEB-INF 디렉토리에 위치한 web.xml 파일은 웹 애플리케이션의 배치 설명자로서 사용됩니다.
- 서블릿 매핑, 필터, 리스너 등과 같은 웹 애플리케이션의 설정을 정의합니다.
- context.xml:
- 각 웹 애플리케이션의 META-INF 디렉토리에 위치한 context.xml 파일은 특정 웹 애플리케이션에 대한 설정을 제공합니다.
- 데이터 소스, 세션 관리, 리소스 관련 설정을 여기에서 구성할 수 있습니다.
- logging.properties:
- conf 디렉토리의 logging.properties 파일은 Tomcat의 로깅 설정을 정의합니다.
- 로그 레벨, 출력 형식, 로그 파일 위치 등을 설정할 수 있습니다.
- catalina.sh (또는 catalina.bat):
- Tomcat을 실행하는 스크립트 파일입니다.
- Java Virtual Machine (JVM) 옵션, 클래스패스, 환경 변수 등을 설정할 수 있습니다.
- setenv.sh (또는 setenv.bat):
- bin 디렉토리에 위치한 setenv.sh 파일은 Tomcat의 환경 변수를 설정하는 데 사용됩니다.
- JVM 메모리 설정 및 기타 환경 변수를 설정할 수 있습니다.
반응형
'개발 > Concept' 카테고리의 다른 글
[ Concept ] HA( High Availability )란? (1) | 2023.11.27 |
---|---|
[Concept] ERD란? (0) | 2023.11.24 |
[Concept] WAS란? (0) | 2023.11.22 |
[ Concept ] 서버에서 디스크 파티션을 나누는 이유 (0) | 2023.11.06 |
[ Concept ] 프레임워크와 라이브러리 차이점 (0) | 2023.11.01 |