Server & OS

Window2000/XP + Jakarta Tomcat 4 + Apache 2 설정하기 with JK2

컨텐츠 정보

본문

저자: 한빛리포터 정원희(유엔젤㈜ 무선인터넷 서비스사업팀/freesoft at nownuri.net)

본 기사는 javaservice.net에서 구했던 연동문서를 약간 편집하고 새로운 부분을 추가해 넣은 일종의 보정판입니다.

왜 JK2로 연동하는가?

아파치와 톰캣을 연동하기 위해 사용되었던 mod_jserv는 Apache/Jserv에서 포팅되기 때문에 너무 복잡하며, 아파치에 필요 없는 부분들도 많았다. Mod_serv가 유닉스 OS 상의 아파치만 지원했던 반면 JK는 보다 많은 웹서버와 OS상에서 사용할 수 있다. JK 는 보다 나은 SSL을 지원하며 톰캣 3.2.x, 3.3.x, 4.0.x, 4.1.x, 5.x를 지원한다. JK2는 JK의 리팩토링 버전이며 Apache 2를 고려해 두고 만들어졌지만 기존의 Apache 1.3 버전과도 호환된다. 또한 IIS나 NES/iPlanet같은 멀티쓰레드로 동작하는 웹서버들에서 보다 잘 작동하도록 디자인되었으며 JNI 모드를 지원하므로 서버내에서 네이티브 기능들을 불러 쓸 수도 있다. 따라서 성능과 호환성 두 가지 모두를 고려할 경우, 이제는 JK2를 이용해서 톰캣과 아파치를 (혹은 기타 다른 웹서버들을) 연동시키는 것이 바람직하다고 할 것이다.

자세한 내용은 아파치 자카르타 프로젝트 문서를 참고하기 바란다.

다른 방법은 없나?

Apache 2를 사용한다면 mod_webapp를 이용하는 또 다른 방법이 있다. WARP 프로토콜을 구현한 mod_webapp는 사용하기 편리하지만 아파치 2.0에서만 사용할 수 있는 APR(Apache Portable Runtime)을 필요로 한다. 또한 mod_webapp는 IIS나 NES/iPlanet, Domino와 같은 웹서버들을 지원하지 않는다. (http://jakarta.apache.org/tomcat/tomcat-4.1-doc/jk2/index.html)

우선 다음과 같은 S/W가 필요하다.
Apache2.0.45
J2SDK 1.4.1_02 (http://httpd.apache.org/download.cgi에서 apache_2.0.46-win32-x86-no_src.msi를 다운로드 )
Jakarta Tomcat4.1.24 (http://jakarta.apache.org/builds/jakarta-tomcat-4.0/release/v4.1.24/bin/에서 jakarta-tomcat-4.1.24.exe 또는 jakarta-tomcat-4.1.24-LE-jdk14.exe를 다운로드합니다. J2SDK 1.4가 이미 설치되어 있다면 LE 버전만 받으면 됩니다. 그렇지 않다면 jakarta-tomcat-4.1.24.exe를 다운로드)
mod_jk2 (http://jakarta.apache.org/builds/jakarta-tomcat-connectors/jk2/release/v2.0.2/bin/win32/참고 윈도우용 mod_jk2-2.0.43.dll)
필요한 소프트웨어를 모두 구했으면 각각을 설치한다. 가급적이면 설치는 J2SDK부터 설치하는 것이 좋다. 그 다음 아파치나 톰켓을 차례대로 설치하면 된다. JK2는 아파치 설치 후, modules 디렉토리에 mod_jk2-2.0.43. dll 파일을 복사하면 된다.

환경 설정

1) JAVA_HOME

JDK가 설치된 디렉토리를 JAVA_HOME 이라는 변수이름으로 환경변수에 추가한다. 바탕화면의 '내 컴퓨터'를 선택하고 팝업메뉴를 띄워 등록정보에 들어간 다음 ‘고급→환경변수’를 선택하면 된다. 모든 사용자에 관계없이 JAVA_HOME이 유효하게 하려면 시스템 변수에, 자신의 계정에만 유효하게 하려면 사용자 변수쪽에 추가하면 된다. 변수명은 JAVA_HOME으로 하고 변수값은 JDK를 설치한 디렉토리를 지정해주면 된다(예. C:\\J2SDK_1.4.1_01). BIN 디렉토리까지 설정해주는 것이 아님을 기억하자.

JAVA_HOME 변수의 경우는 TOMCAT에서 JSP 컴파일 등을 할 때 사용할 뿐만 아니라 다른 자바관련 툴들(ANT같은)에서도 이 변수를 사용하므로 어떻든 간에 한번은 지정하는 것이 작업에 도움이 될 것이다.

2) CLASSPATH

TOMCAT에서는 JSP를 컴파일 할 필요가 있을 때 JAVA_HOME에서 설정된 패스를 기준으로 lib 디렉토리를 뒤지거나 CLASSPATH 환경변수 설정을 참고해서 컴파일에 사용할 패키지인 servlet.jar를 찾는다. 따라서 servlet.jar를 $JAVA_HOME/jre/lib/ext 같은 곳에 넣어주거나 servlet.jar가 포함되어 있는 TOMCAT의 $TOMCAT_HOME/lib 디렉토리에 CLASSPATH 설정을 해주면 된다. 환경변수 설정하는 요령은 앞의 JAVA_HOME의 그것과 동일하다.

3) PATH

자바소스 컴파일에는 javac.exe가 사용되기 때문에, 이를 시스템 어디에서나 사용할 수 있도록 환경변수의 PATH에다가 $JAVA_HOME/bin 디렉토리를 추가해주면 된다. 자바프로그래머라면 대부분 이미 추가해 놓았으리라 생각한다.

4) 아파치 환경설정 - httpd.conf 와 workers2.properties

$APACHE/conf 디렉토리에 있는 httpd.conf 파일을 열고, LoadModule 이라고 되어있는 부분들을 찾아서 적당한 줄에다가 다음과 같이 입력한다.
LoadModule jk2_module modules/mod_jk2-2.0.43.dll

그 후에 DocumentRoot 항목을 찾아서 $TOMCAT_HOME/webapps과 같은식으로 지정해준다.
예)  DocumentRoot "c:\\Program Files\\Apache Group\\Tomcat 4.1\\webapps"

그리고 아래쪽에 있는 Directory 항목 역시 동일하게 수정해준다.
예) <Directory "C:\\Program Files\\Apache Group\\Tomcat 4.1\\webapps">

다 끝냈으면 이번에는 workers2.properties를 편집한다. 이 파일은 기본적으로 아파치에 포함되지 않으므로 conf 폴더 내에서 찾을 수가 없다. 따라서 직접 만들어줘야 하는데 $APACHE_HOME/conf에다가 workers.properties 파일을 만들고 다음의 내용을 복사해넣고 저장하면 된다.
# Define the communication channel
 [status:]
 [uri:/jkstatus/*]
 group=status:
 [shm:]disabled=1
 [channel.socket:localhost:8009]
 info=Ajp13 forwarding over socket
 tomcatId=localhost:8009
 
 # Web Applicaton을 설정
 [uri:/examples/*]
 info=Map the whole webapp

위에서 언급한 바와 같이 workers2.properties 파일은 $APACHE/conf에 있어야만 아파치가 읽어들일 수 있기 때문에 특히 파일의 경로에 주의해야 한다. ($TOMCAT_HOME/conf 가 아님)

5) 톰캣 환경설정 - jk2.properties 과 server.xml

$TOMCAT_HOME/conf/jk2.properties 파일을 열고 편집하면 되는데 내용을 잘 모른다면 다음의 셋팅예제를 그대로 복사해 써도 무방하다.
## THIS FILE MAY BE OVERRIDEN AT RUNTIME. MAKE SURE TOMCAT IS STOPED
## WHEN YOU EDIT THE FILE.
## COMMENTS WILL BE _LOST_
## DOCUMENTATION OF THE FORMAT IN JkMain javadoc.

# Set the desired handler list
handler.list=apr,channelSocket,request,shm
# Override the default port for the socketChannel
# Set the default port for the channelSocket
channelSocket.port=8009

# Default:
# channelUnix.file=${jkHome}/work/jk2.socket
# Just to check if the the config  is working
# shm.file=${jkHome}/work/jk2.shm

# In order to enable jni use any channelJni directive
# channelJni.disabled = 0
# And one of the following directives:

# apr.jniModeSo=/opt/apache2/modules/mod_jk2.so

# If set to inprocess the mod_jk2 will Register natives itself
# This will enable the starting of the Tomcat from mod_jk2
# apr.jniModeSo=inprocess

# Dynamic library
serverRoot= "C:/Program Files/Apache Group/Tomcat/webapps "

완료했으면 이번에는 server.xml을 편집한다. $TOMCAT_HOME/conf/server.xml 파일을 열고 아래의 부분을 찾아 주석처리 하거나 삭제한다. 주석처리는 ‘<!-’로 시작해서 ‘->’로 끝내면 된다. 아래부분은 TOMCAT에 포함되어 있는 Coyote 웹서버에 연결하는 커넥터인데, 여기서는 웹서버로 아파치를 사용할 것이므로 필요없다.
<!--
<Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
      port="8080" minProcessors="5" maxProcessors="75"
      enableLookups="true" redirectPort="8443"
      acceptCount="100" debug="0" connectionTimeout="20000"
      useURIValidationHack="false" disableUploadTimeout="true" />
-->

위의 내용이 있는 곳에서 조금 아래쪽을 보면 다음과 같은 부분이 있다. org.apache.coyote.tomcat4.CoyoteConnector라는 이름의 Connector가 mod_jk2로 연결할 때 사용하는 부분으로, 아래쪽의 org.apache.ajp.tomcat4.Ajp13Connector가 mod_jk를 사용할 때 쓰는 부분이므로 mod_jk 부분(아래쪽)을 주석 처리하도록 한다.
<!-- Define a Coyote/JK2 AJP 1.3 Connector on port 8009 -->
<Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
      port="8009" minProcessors="5" maxProcessors="150"
    enableLookups="true" redirectPort="8443"
      acceptCount="10" debug="0" connectionTimeout="20000"
    useURIValidationHack="false"
      protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"/>
     
<!-- Define an AJP 1.3 Connector on port 8009 -->
<!--
<Connector className="org.apache.ajp.tomcat4.Ajp13Connector"
      port="8009" minProcessors="5" maxProcessors="75"
    acceptCount="10" debug="0"/>
-->

서버 구동 확인

톰캣과 아파치를 실행시킨 후 다음의 주소를 입력해 본다.
http://localhost/examples/servlets/index.html
http://localhost/examples/jsp/index.html
제대로 servlet 또는 jsp의 예제 페이지가 나타나고 각 예제들이 올바로 실행된다면 설치가 올바로 이루어진 것이다. 만약 jsp 나 서블릿 파일이 다운로드 된다거나 소스코드가 보인다거나 404 에러 등이 발견되면 어디에선가 셋팅이 잘못된 것이다. 클래스패스의 문제, servlet.jar 패키지의 부재, 잘못된 JDK컴파일러 설치, 설정파일 편집 오류 등 다양한 문제가 있을 수 있다. 아파치의 톰캣의 로그파일과 설치메뉴얼을 보면서 약간의 노력을 더 기울인다면 무난하게 해결 할 수 있을 것이다.

관련자료

댓글 0
등록된 댓글이 없습니다.
Today's proverb
나 자신을 주는 것이 좋은 이유는 그럼으로써 얻는 것보다 크기 때문이다. (오리슨 스췌트 마든)