앞으로 3회에 걸쳐 웹개발환경 설정의 기본중의 기본인 아파치 서버와 톰캣과의 연동에 대해 포스팅한다.




1. 아파치 http 서버란

  - 아파치 소프트웨어 재단(Apache Software Foundation, ASF)에서 관리하는 http 웹서버이다.

  - 성능이 우수함에도 오픈소스이기 때문에 무료로 사용이 가능하다.

  - 운영체제의 제한이 없기때문에 리눅스나 윈도우에서 사용이 가능하다.

  - 톰캣, 레진등의 WAS와 연동할 수 있다.

  - 현재 세계적으로 가장 인기가 많다.(2013년 기준 점유율 53%)


2. 아파치 톰캣(Apache Tomcat) 혹은 톰캣 및 연동

- Apache Software Foundation(ASF)에서 개발된 서블릿 컨테이너(또는 웹 컨테이너)만 있는 WAS이다.

- was로써 쓰인다. html을 로딩할때 웹서버보다 속도가 느리다. 이를 해결하기 위해 아파치와 연동한다.

- 연동모듈로는 버전 1.3, 2.0은 mod_jk를 이용하고 2.2이후로는 mod_proxy_ajp를 사용한다.

- 아파치는 html같은 정적인 페이지나 server-side function이나 CGI, PHP, SSI를 로드할때 사용된다.

- 톰캣은 Java servlets and JSPs를 해석한다.

- 내장 웹서버로 Standalone server 도 가능하지만  대규모 시스템에서는 웹서버(Apache Http Sever, Microsoft IIS)와 연동하여 사용한다.

- 단독으로 사용시 jsp와 서블릿만 해석이 가능해서 톰캣자체내장 http서버를 사용하더라도 php페이지는 해석이 불가능하다.

- php, jsp모두 사용하고 싶다면 아파치에서는 php를 호출하고 톰캣에서는 jsp를 호출하도록 구성하여 상호보완되게 한다.

- 현재는 톰캣이 발전해서 톰캣 웹서버가 아파치에 뒤지지 않을 정도로 역할을 수행한다. 


3. mod_jk를 통한 아파치 톰캣 연동

  - mod_jk 모듈은 톰캣에서 배포되지만 연동을 위해 아파치 웹서버의 modules 폴더에 복사에 넣어야 한다.

  - 아파치의 httpd.conf에 톰캣연동 설정을 추가하고 톰캣에서 처리할 요청을 지정한다.

  - 사용자의 브라우저를 통한 요청은 보통  아파치 웹서버의 80포트로  접속된다.

  - 아파치는 요청을 확인해 톰캣에서 처리해야하는경우 톰캣의 AJP포트(8009) 로 접속해 요청을 전달한다.

  - 톰캣은 요청을 처리하여 처리결과를 아파치 웹서버에 되돌려 준다.

  - 아파치 웹서버는 최종적으로 톰캣으로부터 받은 처리결과를 사용자에게 전송한다.


4. 그림에서 보듯이 apache server는 request를 받으면 어디에서 처리할지 판단하여 필요시 8009포트를 통해 tomcat으로 forward시킨다.


참고 : https://ko.wikipedia.org/wiki/아파치_톰캣