Apache 2.4 + Tomcat 7 연동 본문

프로그램/추가 팁

Apache 2.4 + Tomcat 7 연동

우선 아파치 웹서버는 2.4버전, 톰캣은 7.0.64을 기준으로 작성되었음을 감안하시기 바랍니다.

 

우선 아래와 같이 아파치 서버가 설치가 되어 있다고 가정하겠습니다.

그리고 톰캣의 포트는 기본값인 기동 8005, 외부연동 8009, 톰캣 서버 8080으로 진행되었습니다.

아파치에서 톰캣으로의 연동은 mod_jk로 연동이 되는데요.

mod_jk.so 은 기본적으로 아파치 서버에는 포함이 되어 있지 않아서 별도로 다운을 받아야 합니다.

tomcat.apache.org/download-connectors.cgi

로 가셔서 다운로드를 받으시면 됩니다. 저는 윈도우 환경이라 zip으로 다운 받았습니다.

 

압축을 푸시면 안에 mod_jk.so 파일이 있는데요. 이 파일을 아파치의 다른 모듈이 있는 폴더에 복사하겠습니다.

즉 C:\Program Files\Apache24\modules 여기 폴더에 위 파일을 넣었습니다. 

 

그리고 C:\Program Files\Apache24\conf 폴더로 가서 httpd.conf 라는 아파치 환경파일을 에디터로 수정하겠습니다.

에디터에서 mod_jk.so 파일을 검색하면 LoadModule jk_module modules/mod_jk.so 이라는 문구가 있습니다.

만약 없다면 LoadModule 맨 마지막에 위에 구문을 추가해주세요.

 

LoadModule jk_module modules/mod_jk.so

그리고 저는 가상서버를 이용하여 설정을 할 예정이어서

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

이 부분도 주석을 풀도록 하겠습니다.

 

그리고 httpd.conf의 맨 마지막에 아래 문구를 추가하겠습니다.

현재는 mod_jk.conf 파일이 없는데요. 잠시후에 해당 위치에서 파일을 생성하겠습니다.

해당 파일의 역할은 tomcat으로의 연동시에 해당 환경을 읽어서 연동하겠다는 것입니다.

<IfModule jk_module>
Include conf/mod_jk.conf
</IfModule>

httpd.conf 파일을 수정하고 저장하셨다면 탐색기로 가셔서 새로운 파일을 생성합니다. 

일단 mod_jk.conf 와 workers.properties를 생성합니다. workers.properties는 mod_jk.conf안에서 사용될 파일입니다.

자세한 내용은 mod_jk.conf를 수정하면서 말씀 드리겠습니다.

 

mod_jk.conf 파일을 에디터로 여신 뒤에 아래와 같이 문구를 넣습니다.

JkLogFile "|bin/rotatelogs.exe -l logs/mod_jk_%Y%m%d.log 86400"
JkLogLevel Info
JkLogStampFormat "[%a %b %d %H: %M: %S %Y]"
JkRequestLogFormat "%w %V %T"
JkWorkersFile conf/workers.properties

첫줄 JkLogFile부터 설명을 한다면 mod_jk에서 사용하는 로그파일 설정입니다.

로그를 로테이션으로 남기겠다는 내용인데요.

사용프로그램은 bin/rotatelogs.exe 이고 -l은 리스트로 남기며, 파일을 logs폴더 아래에 

mod_jk_시스템날짜.log 로 로그를 남기는데 86400kb 까지 저장하되 넘어가면 다음 파일로 생성하라는 의미입니다.

 

두번째 JkLogLevel Info 는 로그 남기는 레벨을 Info 레벨로 하겠다는 것입니다. 

 

세번째 JkLogStampFormat "[%a %b %d %H: %M: %S %Y]" 는 로그를 남기는 스탬프 즉 날짜 형식은 

요일, 월, 일, 시간, 분, 초, 년도 순으로 남기겠다는 것입니다.

 

네번째 JkRequestLogFormat "%w %V %T" 는 요청 내용의 로그 포맷인데요. 

w는 추후에 나오는 worker인데요. 어떤 worker가 처리하는지 이고,

V는 처리하는 가상 아이피이고 T는 처리 소요 시간입니다.

 

추후에 로그가 쌓이면 아래와 같이 쌓이게 됩니다.

 

[Sun Feb 14 00: 11: 17 2021]worker1 192.168.0.100 0.000000

마지막 JkWorkersFile conf/workers.properties 이 제일 중요한데요. mod_jk.conf는 사실 환경설정일 뿐이고 

실제 작업은 workers.properites에서 설정된 worder(워커, 작업자)가 합니다.

여기서는 실제 작업하는 파일의 위치를 설정합니다. 저는 위에서 생성한 conf/workers.properties 를 이용하겠습니다.

 

workers.properties 파일을 열어서 아래와 같이 입력합니다.

worker.list=worker1 
worker.worker1.type=ajp13 
worker.worker1.host=localhost 
worker.worker1.port=8009

현재 저는 톰캣이 하나만 연동되는 구조라 작업하는 worker가 하나만 있습니다.

worker1은 원하는 대로 바꾸셔도 됩니다. 위에서 정의한 worker명과

아래 2,3,4번째 줄에 두번째 이름과 동일하기만 하면 됩니다.

 

만약 하나의 아파치 웹서버에 두개이상의 톰캣이 연동이 필요하다면 아래와 같이 사용하면 됩니다.

(worder 즉 워커, 작업자가 2개이며 각각의 이름이 worker1, worder2)

worker.list=worker1,worker2

worker.worker1.type=ajp13 
worker.worker1.host=192.168.0.101 
worker.worker1.port=8009

worker.worker2.type=ajp13 
worker.worker2.host=192.168.0.102 
worker.worker2.port=8009

여기까지 작성이 되셨다면 conf/extra/httpd-vhosts.conf 를 에디터로 여세요.

기존에 VirtualHost 로 설정된 내용을 아래와 같이 수정합니다. 이때 www.localhost.co.kr  같은 것은 

임의의 값이니 적당히 넣어주시면 됩니다.

(사실 httpd-vhosts.conf 하나의 도메인에 여러 가상호스트를 설정하기 위한 설정파일입니다.

추후 멀티 도메인으로 설정하실려면 해당 파일을 잘 활용하시면 됩니다.)

<VirtualHost *:80>
ServerName www.localhost.co.kr
ServerAlias www.localhost.co.kr
DocumentRoot "${SRVROOT}/htdocs"
DirectoryIndex index.html

JkMount /* worker1
JkMount /*.* worker1
JkUnMount /*.html worker1
</VirtualHost>

위 4줄은 기본값으로 처리하면 되는 것이라 넘어가겠습니다.

중요한 부분은 JkMount 부분인데요. 

해당 웹서버가 사용자의 요청이 들어오면 도메인 / 뒤에 모든(*) 호출을 worker1로 처리해라는 것입니다. 

worder1은 우리가 위 workers.properties 에 등록된 워커입니다.

 

JkMount /* 와 /*.* 는 요청이 오면 worker1에 설정된 tomcat으로 넘겨서 처리하겠다는 것입니다.

JkUnMount /*.html 는 *.html로 요청이 오는 건은 worker1로 넘기지 말고 아파치 서버 자체에서 해결하라는 의미입니다.

 

지금까지 웹서버와 톰캣 연동을 설명했는데요. 

쉬우면서도 좀 어렵습니다. 일단 따라하기 처럼 하신뒤에 그 의미를 잘 보시면 이해가 되시리라 생각합니다.

 

그럼 즐코딩 하시길...

프로그램/추가 팁 Related Articles

MORE

Comments