mod_jk와 mod_proxy 차이점.

2009년 7월 기준 mod_jk , mod_proxy 의 장단점.

mod_proxy

* Pros:
      o No need for a separate module compilation and maintenance. mod_proxy,
        mod_proxy_http, mod_proxy_ajp and mod_proxy_balancer comes as part of 
        standard Apache 2.2+ distribution
      o Ability to use http https or AJP protocols, even within the same 
        balancer.
* Cons:
      o mod_proxy_ajp does not support large 8K+ packet sizes.
      o Basic load balancer
      o Does not support Domain model clustering

mod_jk

* Pros:
      o Advanced load balancer
      o Advanced node failure detection
      o Support for large AJP packet sizes
* Cons:
      o Need to build and maintain a separate module

출처 : http://stackoverflow.com/questions/1081918/apache-to-tomcat-mod-jk-vs-mod-proxy
2011/09/26 13:25 2011/09/26 13:25
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다

아파치2-톰캣5 연동 :: Apache2 Tomcat5 mod_jk integration

아래 내용은 KLDP WIKI 의 글을 기초하여 제 경험과 생각을 더했습니다. 원글은 개인적인 보관/참조를 목적으로 복사해 왔습니다.


1 Apache 2.0

http://httpd.apache.org 에서 httpd-2.0.49.tar.gz 받아서 푼다.

[code]
$ tar xvfz httpd-2.0.49.tar.gz
[/code]

INSTALL 파일을 참고하여 apache를 설치하고 실행한다.

[code]
$ ./configure --prefix=PREFIX
$ make
$ make install
$ PREFIX/bin/apachectl start
[/code]
여기서 PREFIX는 apache가 설치될 디렉토리이다. --prefix=PREFIX를 생략하면 /usr/local/apache2에 설치된다.
2003년경의 모 아티클에는 아파치 인스톨시에 configure --prefix=/usr/local/apache --enable-module=so 와 같이
모듈 옵션을 주라고 하는데 최근 문서로 확인 해 봐야 할 듯.

이하의 설명에서 PREFIX는 아파치가 설치된 디렉토리를 뜻한다.

브라우저를 열고 http://127.0.0.1/을 입력하였을 때, apache web server가 설치되었다는 메시지가 나오면 성공.

아파치 서버를 끝내려면

[code]
$ PREFIX/bin/apachectl stop
[/code]


2
J2SE

http://java.sun.com에서 J2SE 1.4.2 를 받아 설치한다. SDK를 받아야 된다. JRE만 받으면 안 됨.

확장자가 bin인데 실행권한을 주고 실행시키면 license에 동의하는지를 묻고 이에 대하여 y를 눌러 대답하면 설치가 된다.

아래와 같이 심볼릭 링크를 한다.

[code]
$ ln -s /usr/java/j2sdk1.4.2_04 /usr/local/java
[/code]

/etc/profile.d/java.sh를 아래의 내용으로 만들어 넣는다. (실행 퍼미션으로 넣어야 한다.)

[code]
JAVA_HOME=/usr/local/java export JAVA_HOME
[/code]

3 Tomcat 5

http://jakarta.apache.org에서 jakarta-tomcat-5.0.19.tar.gz를 받아서 푼다. (5.5.x 버전도 잘 동작함을 확인 함.)
[code]
$ tar xvfz jakarta-tomcat-5.0.19.tar.gz
[/code]

RUNNING.txt 파일을 참고하여 tomcat을 실행시킨다.
[code]
$ $CATALINA_HOME/bin/startup.sh
[/code] 여기서 $CATALINA_HOME은 tomcat이 설치된 디렉토리이다.

아래와 같이 심볼릭 링크를 한다.
[code]
$ ln -s /usr/jakarta-tomcat-5.0.19 /usr/local/tomcat
[/code]

브라우저를 열고 http://127.0.0.1:8080/을 입력하였을 때, tomcat이 설치되었다는 메시지가 나오면 성공. tomcat을 끝내려면
[code]
$ $CATALINA_HOME/bin/shutdown.sh
[/code]

4 mod_jk2.so


http://jakarta.apache.org 에서 jakarta-tomcat-connectors-jk2-src-current.tar.gz를 받아서 푼다.

jk/native2/INSTALL.txt를 참고하여 mod_jk2.so를 만든다.
[code]
$ ./configure --with-apxs2=PREFIX/bin/apxs
$ make $ cd ../build/jk2/apache2
$ PREFIX/bin/apxs -n jk2 -i mod_jk2.so
[/code]
* PREFIX는 apache가 설치된 경로로 대개 /usr/local/apache 혹은 /usr/local/apache2 에 위치한다.


5 httpd.conf

위에서 만든 mod_jk2.so를 PREFIX/modules/에 복사한 다음, PREFIX/conf/httpd.conf 에서
[code]
#LoadModule foo_module modules/mod_foo.so
[/code]
 와 같은 형식으로 되어 있는 곳을 찾아 그 아래에
[code]
LoadModule jk2_module modules/mod_jk2.so
[/code]
를 추가한다.

DirectoryIndex를 찾아 그 줄에 index.jsp를 추가한다.
[code]
Alias /icons/ "/usr/local/apache2/icons/"
[/code] 와 같은 형식의 행을 찾아 그 아래에
[code]
Alias /jsp-examples/ "/usr/local/tomcat/webapps/jsp-examples/"
Alias /servlets-examples/ "/usr/local/tomcat/webapps/servlets-examples/"
[/code]
를 추가한다.

DocumentRoot 행을 찾아
[code]
DocumentRoot "/www"
[/code]
로 바꾸고 저장하고 아래와 같이 심볼릭 링크를 한다.
[code]
$ ln -s /usr/jakarta-tomcat-5.0.19/webapps/ROOT /www
[/code]
* 이렇게 아파치의 DocumentRoot 와 톰캣의 DocRoot를 바로 연결 하기보단 톰캣의 가상호스트 설정으로 돌리는 쪽이 훨씬
  나은 방법이라고 생각 함.
*위 방법대로 설정 시 ContextRoot가 / 가 되는 것은 위에 설정한 톰캣 ROOT밖에 없다.
*위 설명에서와 같이 아파치의 DocumentRoot 와 톰캣의 DocRoot 심볼릭 링크로 걸지 않고 톰캣의 Host설정만으로도 충분함.


6
workers2.properties

PREFIX/conf/에 workers2.properties를 아래의 내용으로 만들어 저장한다. ( jk/native2/INSTALL.txt 참고 ) [code]
[channel.socket:localhost:8009]
port=8009 host=127.0.0.1

[ajp13:localhost:8009]
channel=channel.socket:localhost:8009

[uri:/*.jsp]
worker=ajp13:localhost:8009

[uri:/servlets-examples/*]
worker=ajp13:localhost:8009
[/code]
* 위 5번 httpd.conf 수정시 제 방식대로(아파치 DocumentRoot와 톰캣의 ROOT를 심볼릭으로 엮지않는 방법) 톰캣의 HOST를
설정하는 방식을 따른다면 아래의 내용을 추가하여 모든 uri에 대해 톰켓이 알 수 있도록 다음을 추가 합니다.
[code]
[uri:/*]
worker=ajp13:localhost:8009
[/code]
 

7 Virtual Host

# Virtual Host의 경우 아래 URI에서 호스트 명을 넣어야 하고요. server.xml에서 host명을 넣으시면 됩니다. [code]
[uri:www.kldp.net/*.jsp]
worker=ajp13:localhost:8009

[uri:www.kldp.net/servlets-examples/*]
worker=ajp13:localhost:8009

[uri:www.kldp.org/*]
worker=ajp13:localhost:8009
[/code]

8 LB(로드 발란서)

-- :> 내일 올릴게요.

9 apache 실행

[code]
$ PREFIX/bin/apachectl start
[/code]

10 tomcat 실행

[code]
$ $CATALINA_HOME/bin/startup.sh

또는

$ $CATALINA_HOME/bin/catalina.sh start
[/code]

11 확인

브라우저에서 http://127.0.0.1을 입력하면 톰캣 화면이 나온다. (8080을 입력하지 않은 것을 주목)

http://127.0.0.1/jsp-examples/을 입력하여 그곳에 있는 jsp 예제를 클릭하여 실행결과가 나타나면 jsp 성공.

http://127.0.0.1/servlets-examples/를 입력하여 그곳에 있는 servlet 예제를 클릭하여 실행결과가 나타나면 servlet 성공.
2008/03/07 01:26 2008/03/07 01:26
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다
  1. Blog Icon

    정말 어렵게 해놨네