developerworks/WAS

mod_jk.so를 통해 apache2와 tomcat7의 연동

수상한 김토끼 2013. 3. 6. 17:22

나는 윈도우즈를 잘 모르므로.. 리눅스에서 작업한 내용을 정리 해 둔다..

윈도우에서 할줄 아는건.. 와우 하는거 하고.. 음... 그리고.. 없는거 같다..


 apache는  os에 따른 차이가 있으니 컴파일 해서 설치했지만 tomcat jvm만 있으면 바이너리로 받아서 실행하면 문제가 없으니 톰캣은 소스컴파일을 해본적도 없고 할 예정도 없다.. 여튼.. 여기까지 다 됐다고 치고

나 같은 경우는 8080을 apache2의 port로 사용을하고 8180을 tomcat7의 port로 사용하고 있다. (이런건 중요한게 아니니까) 그래서 8080으로 접속을하면 It works! 화면이 뜨고.. 8180으로 접속을 하면 톰캣 고양이가나온다. (나는 고양이보다는 개가 더 좋다) 웹서버와 톰캣을 나누는 이유 같은거를 여기다 적기 시작하면 한참을 적어야 되니까.. 그냥.. 귀찮은건 패스하고.. 일단.. 저 2개를 연동해서.. 정적인 소스들(이미지,html,js등등등)은 웹서버가 처리하게하고 나머지 동적인 소스들(jsp,.do등등등)은 와스가 처리하도록 만들어 보자..


 기초적인 개념을 잡아보면 웹서버가 전면에 있고 와스가 뒷단에서 요청받은 소스의 유형에 따라 처리하도록 만들어야 하는데 이 2개를 하나로 묶어주는 커넥터 역할을 mod_jk라는 녀석이 해 준다.. 찾아보니까 mod_jk말고 다른녀석들도 많이 있는 것 같지만.. 구관이 명관이라고.. 잘 할줄 아는걸로 그냥 한다.


우선 $APACHE_HOME/conf/httpd.conf 파일을 열어서 맨 아래부분에 다음의 내용을 추가 해 준다.

LoadModule jk_module modules/mod_jk.so

<IfModule jk_module>

JkWorkersFile conf/workers.properties

JkLogFile logs/mod_jk.log

JkLogLevel info

JkMountFile conf/uriworkermap.properties

</IfModule>


모듈을 로드 하겠다는 내용을 추가해서 apache가 mod_jk를 사용하도록 선언을 해 주면 되는데 mod_jk.conf등의 파일로 빼서 작성을 한후 httpd.conf파일에 Includ mod_jk.conf 이런식으로 해 줘도 되는데 그냥 설정파일이 많아지면 나중에 헷갈리니까 나는 저기다 쓴다. ㅋㅋ


mod_jk.so 파일은 컴파일을 해야 하니까.. 일단 두고 다음 단계로

$APACHE_HOME/conf/ 폴더에 다음 2개의 파일을 작성한다.


1. uriworkermap.properties

/*.do=worker1

/*.jsp=worker1


2. workers.properties
worker.list=worker1
worker.worker1.port=8009
worker.worker1.host=localhost
worker.worker1.type=ajp13
worker.worker1.lbfactor=1

1번은 .do와 .jsp로 들어오는 요청을 worker1으로 보내겠다는 뜻으로 추가 할 내용이 있으면 추가 하면 된다.

2번은 worker1 이라는 worker 여기서는 tomcat이 되겠다.. tomcat과 ajp13 타입으로 8009포트로 통신을 하겠다는 의미 정도가 되겠다.

이렇게 써주고 나서 이제 mod_jk.so파일을 만들어야 하는데.. 하는데..
http://tomcat.apache.org/download-connectors.cgi 요기에 가서 tomcat-connector-xx.xx.tar.gz 소스파일을 다운로드 받는다. 압축을 풀고 native폴더 아래에 들어가서 build_conf.sh 파일을 실행 --> 나 같은 경우는 에러가 발생했다.. 우선 autoconf가 없다는 에러가 첫 번째 두 번째 에러는 libtool이 없다는 에러가 발생.. 열심히 찾아서 시스템에 설치 해 주고.. (우분투 같은 경우에는 apt-get instll autoconf libtool 혹은 소스를 받아서 컴파일해서 설치해도 좋다..) 다시 buildconf.sh파일을 실행..

이제 의례하는 3단계가 남았다. 여기는 mod_jk.so파일만 필요함으로 2단계이다.. configure, make 우선 configure를 하기 위해서는 apxs를 필요로한다. apache어쩌구 저쩌고 하는 놈인데.. $APACHE_HOME/bin 아래 찾아보면 예쁘게 들어있다. 요놈을 사용해서 ./configure --with-apxs=/home/apache/apache2/bin/apxs 요런식으로 configure를 뙇 하고 실행 그리고 make를 실행하면 mod_jk.so파일이 native/apache-2.0/폴더 아래에 예쁘게 생겨있는 것을 확인 할 수 있다. 요 파일을 $APACHE_HOME/modules/mod_jk.so 위치로 복사하면 끝~

이제 apache 키고.. tomcat을 키고.. 확인 해 보면 된다..