아파치와 톰캣

방패맨·2024년 1월 9일
post-thumbnail

아파치: 웹 서버용 소프트웨어 , HTTP 서버 , 정적인 데이터 처리

톰캣 : 아파치 재단의 WAS , 동적인 데이터 처리 , 톰캣은 was서버이지만 web서버의 기능도 갖추고 있다. dynamic(동적)인 웹을 만들기 위한 웹 컨테이너, 서블릿 컨테이너라고 불리며, 웹서버에서 정적으로 처리해야할 데이터를 제외한 JSP, ASP, PHP 등은 웹 컨테이너(톰캣)에게 전달한다.

was = web server+ web container
apache = web 역할 서버
tomcat = was 역할 서버
apache tomcat = web+was 서버

Q) 그러면 tomcat만써도 되는거아닌가?
A) 하지만 역할 분리 , 성능 등을 고려하여 was와 webServer를 분리한다.

즉 ,

  1. http 요청이 들어오면
  2. 아파치로 전달하고 정적인 데이터는 아파치에서 처리
  3. 동적인 데이터는 아파치에서 ajp프로토콜을 사용하여 미리 지정한 소켓을 통해 특정 포트로 tomcat의 서블릿 컨테이너 (spring의 경우 dispatcherServelet) 로 전달
  4. 이후 handler를 통해 이동한 뒤 mvc패턴에 의해 가져온 데이터를 응답.

아파치 톰캣 연동 및 통신과정

- 클라이언트 <-80-> 아파치 <-8009-> 톰캣 <-8080-> 클라이언트 (port 임의 설정)

- 아파치와 톰캣 연동은 [mod_jk], [mod_proxy], [mod_proxy_ajp] 3가지 방법 존재 

- mod_jk : 
아파치와 톰캣을 연동하기 위한 아파치의 모듈로써AJP 프로토콜(web<->was protocol)을 이용하여 
아파치에 들어온 요청 중 톰캣이 처리할 요청을 AJP 포트(일반적으로 8009)를 통해톰캣에 전달하고 
그에 대한 응답을 받는 역할을 수행

+서버에 아파치와 톰캣을 올리는 간략한 과정
1. OS에 아파치와 톰캣 설치
2. mod_jk.so 설치 및 컴파일
3. workers.properties , httpd.conf 설정

profile
개발자 방패맨의 기술블로그

0개의 댓글