정적인 데이터를 처리하는 웹서버로 흔히 클라이언트가 HTML, JPG, Resource 파일 같은 변하지 않는 파일을 요청하면 Apache는 해당 파일을 클라이언트에게 응답을 하는 소프트웨어.
Tomcat
Tomcat은 WAS(Web Application Server)로 불리며 동적인 데이터 즉 어떠한 요청에 따른 DB를 조회하고 계산하여 제공하는 등 다양한 역할을 수행하는 소프트웨어.
흔히 웹을 구성할 때 Apache + Tomcat을 결합하여 사용합니다. 그 이유는 Tomcat은 주로 동적인 데이터를 처리 하기 때문에 많은 리소스를 필요로 하여 많은 요청이 들어오면 부하가 걸릴 수 있는 반면 Apache는 정적인 데이터를 전달함으로써, 상대적으로 적은 리소스를 잡아 먹기 때문입니다. 이둘을 연동함으로써 정적인데이터를 요청했을 경우 Apache가 처리한 후 클라이언트에게 전달하고, 동적인 데이터를 요구하는 경우에는 Apache가 Tomcat에게 클라이언트의 요청을 전달하고 Tomcat이 요청에 따른 동적인 데이터를 만든 후 그것을 Apache에게 전달 Apache는다시 클라이언트에게 전달함으로써 좀 더 효율적으로 서버를 운영할 수 있습니다.
# vi /etc/httpd/conf/httpd.conf
# 맨 아래 추가
LoadModule jk_module modules/mod_jk.so
<VirtualHost *:80>
ServerName localhost
JkMount /* tomcat
</VirtualHost>
VirtualHost *:80, ServerName 두 가지 정보를 통해 들어온 요청을 어떤 톰캣에서 처리할지 결정합니다.. 지금 설정은 80 포트로 들어오는 모든 요청을 tomcat으로 보내고 있습니다.
#EX) 아래 설명을 위한 코드 입니다.
LoadModule jk_module modules/mod_jk.so
<VirtualHost *:80>
ServerName example.com
JkMount /*.do tomcat2
</VirtualHost>
만약 위와 같이 설정하게 되면 80포트로 들어오면서 요청 URL이 example.com이고, .do로 끝나는 것들만 tomcat2에서 처리하게 됩니다. (이건 안 하셔도 됩니다. 설명을 위한 예제입니다.)
그 다음 worker를 관리하는 worker.properties의 위치와 로그파일 및 level을 관리하는 코드를 맨아래에 또 추가합니다.
해당 코드를 mod_jk.conf 파일로 따로 설정하는 방법도 있지만 간혹 연동이 안되는 경우가 있어 httpd.conf 파일에 같이 넣는 편입니다.
cp -a /usr/local/tomcat8/conf /usr/local/instance/tomcat1
cp -a /usr/local/webapps /usr/local/instance/tomcat1
cp -a /usr/local/logs /usr/local/instance/tomcat1
cp -a /usr/local/work /usr/local/instance/tomcat1