[Mac]mod_jk를 이용하여 apache와 tomcat 연결하기

Published on: 2013. 11. 14. 16:37 by louis.dev
tomcat을 실행시키기 위해서는 JRE(Java Runtime Environment)가 필요합니다. JRE를 설치하는 방법은 Oracle에서 JRE를 다운받아 설치하는 방법도 있지만 맥에서는 쉽게 다운로드 받아 설치할수 있습니다.

1. JRE설치

먼저 터미널을 실행시킨 후
$ java -version
을 실행시켰을 경우 현재 JRE가 설치되어 있다면
java version "1.6.0_51"
Java(TM) SE Runtime Environment (build 1.6.0_51-b11-457-11M4509)
Java HotSpot(TM) 64-Bit Server VM (build 20.51-b01-457, mixed mode)
위와 같이 현재 맥에 설치된 JRE의 버전이 출력될것입니다. 만약 자바가 설치되어 있지 않으면 이렇게 얼럿창이 뜨면서 JRE를 설치하도록 유도하고 있습니다. 여기서 설치를 누르면 손쉽게 JRE를 설치할 수 있습니다.  

2. Tomcat 설치

Tomcat은 따로 설치할 필요가 없습니다. 여기에서 tomcat의 압축파일을 다운로드 받은 후 적당한 곳에 압축을 풀어 놓음으로서 설치는 끝나게 됩니다. 혹은 아래 명령어를 터미널에 입력함으로서 쉽게 다운로드 받을 수 있습니다.
$ curl -O http://mirror.apache-kr.org/tomcat/tomcat-7/v7.0.42/bin/apache-tomcat-7.0.42.tar.gz
$ tar xzvf apache-tomcat-7.0.42.tar.gz
$ mv apache-tomcat-7.0.42 ${적당한디렉토리}
#톰켓 실행방법
$ 톰켓설치디렉토리/bin/startup.sh
#톰켓 종료방법
$ 톰켓설치디렉토리/bin/shutdown.sh

3. JK Connector 컴파일 설치

톰켓 홈페이지에서 JK Connector Source 압축파일을 다운로드 하거나 여기를 눌러 직접 다운로드 하시면 됩니다.
$  curl -O http://apache.mirror.cdnetworks.com//tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.37-src.tar.gz
$ tar zxf tomcat-connectors-1.2.37-src.tar.gz
$ cd ./tomcat-connectors-1.2.37-src/native
$  ./configure --with-apxs=/usr/sbin/apxs

#설치시 
# checking for gcc... /Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.8.xctoolchain/usr/bin/cc
# checking for C compiler default output file name... configure: error: C compiler cannot create executables
# See `config.log' for more details.
# 라는 에러가 발생하면 아래의 명령어를 입력합니다.
$ sudo ln -s /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain /Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.8.xctoolchain

$ make
$ sudo make install
위와 같은 명령어로 컴파일을 완료하면 /usr/libexec/apache2/mod_jk.so가 생성됩니다. 생성된 모듈을 활성화 하고 설정을 합니다.
$ sudo vi /etc/apache2/httpd.conf

# httpd.conf에 아래내용 추가
LoadModule jk_module libexec/apache2/mod_jk.so

<IfModule jk_module>
    JkWorkersFile /etc/apache2/workers.properties
    JkLogFile     ${로그파일위치}/mod_jk.log
    JkLogLevel    info
    JkMountFile   /etc/apache2/uriworkermap.properties
</IfModule>

$ sudo vi /etc/apache2/workers.properties

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

$ sudo vi /etc/apache2/uriworkermap.properties
/*.jsp=worker1
/*.krespo=worker1

#만약 context로 설정을 하고자 한다면 /contextName/*=worker1 으로 설정합니다.

$ sudo apachectl -t   #설정파일 테스트
$ sudo apachectl graceful #graceful로 아파치 재시작

4. tomcat 설정 및 테스트용 context 설정

$ vi ${톰켓 홈 디렉토리}/conf/server.xml
# &lt;Connector&gt; 태그의 속성으로 URIEncoding=&quot;UTF-8&quot;을 추가합니다.
# 이렇게 설정해야지 parameter로 한글을 전송할때 파라미터가 깨지지 않습니다.
<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443"
               URIEncoding="UTF-8"/>

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="UTF-8" />

$ vi ${톰켓 홈 디렉토리}/conf/Catalina/localhost/ROOT.xml

# path = localhost:8080/test
# docBase = 아파치의 documentRoot
<Context path="/" docBase="/data/service/tomcat" reloadable="false" privileged="true" antiResourceLocking="false" antiJARLocking="false"  allowLinking="true">
</Context>

# 저장후 서버 재시작
이상으로 mod_jk 설정을 완료하였습니다.