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

    정말 어렵게 해놨네

윈도우 서비스모드로 설치한 톰캣 4의 설정 변경하기

톰캣 5 버전부터는 작업표시줄에서 톰캣을 모니터링 할 수 있는 Apache Tomcat Proterties 라는 유틸리티가 있어
이를 통해 톰캣의 설정을 변경 할 수 있지만 톰캣 4 버전대를 서비스모드로 설치하면 프로퍼티를 수정 할 수 없어
난감할 때가 있습니다.
사용자 삽입 이미지
Tomcat 5 버전의 모니터링 툴

이럴 경우 레지스트리 에디터를 열어
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services 아래에서 Apache Tomcat 항목을 찾으시면
프로퍼티를 수정 할 수 있습니다.

사용자 삽입 이미지
Tomcat 4 버전이라면 레지스트리에서 수정하자!!



2007/11/27 15:56 2007/11/27 15:56
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다

톰캣 5.5 서버에 가상호스트 설정하기 :: Virtual Host Configuration on Tomcat 5.5

Tomcat 5.5 버전대의 웹어플리케이션을 설정하는 방법을 정리 해 둡니다.
물론, Jakarta-Apache 의 Tomcat 매뉴얼 을 참조하는게 제일 정확하고 올바른 방향입니다.

이 문서를 작성하는 이유는 처음 웹어플리케이션을 구축하는 단계에서 꼭 필요한 설정사항과 설정파일을
간편히 참조하고자 하는데 그 목적이 있습니다.

1. Context Path 설정
톰캣 4 버전대의 경우, Context Path를 [CATALINA_HOME]/conf/server.xml 에 기술 했지만 5 버전부터는
그 방법이 바뀌었습니다.

  - 1단계 :  [CATALINA_HOME]/conf/server.xml 에 HOST 항목 추가하기
     톰캣 5.5 를 설치하고 난 후 server.xml 를 열어보면 아래와 같이 기본적으로 localhost 란 이름으로 HOST
     항목이 정의되어 있을 겁니다.

    <Host
        appBase="webapps"
        autoDeploy="false"
        liveDeploy="false"
        name="localhost">
    </Host>
      이 아래에 이어서 추가하고자하는 HOST항목을 추가 해 줍니다.
    <Host
        appBase="webapps"
        autoDeploy="false"
        liveDeploy="false"
        name="www.new_site.com">
    </Host>

   - 2단계 :  [CATALINA_HOME]/conf/Catalina 디렉토리에 HOST 디렉토리 추가하기
      디폴트로 [CATALINA_HOME]/conf/Catalina/localhost 란 디렉토리가 있을겁니다.
      [CATALINA_HOME]/conf/Catalina 디렉토리 내에 1단계에서 추가한 HOST ( www.new_site.com )의
      이름을 갖는 디렉토리를 추가합니다.

      [CATALINA_HOME]/conf/Catalina/www.new_site.com

    - 3단계 :  ROOT.xml 생성
      2단계에서 생성한 디렉토리 내에 빈 ROOT.xml 을 만들고 그 파일에 context path를 기술해 줍니다. 
      <?xml version="1.0" encoding="UTF-8"?>
      <Context
          docBase="D:/Project2007/AirForceClubReservationSystem/build/web"
          privileged="true">
      </Context>

      여기서 docBase는 웹어플리케이션이 위치하는 절대경로를 기술해 줍니다.


2. 공용 라이브러리 설정

    - 4단계 : 공용 라이브러리 배치하기
      위와같은 순서로 톰캣서버에 여러개의 호스트가 존재 할 수 있는데 모든 호스트가 공통으로 사용하는 라이브러리 ( JDBC드라이버와 같은 )
      등이 있을 수 있습니다. 각각의 호스트별로 java 옵션을 통하여 클래스패스를 걸어주셔도 되지만 톰캣이 올라가는 와중에 
      참조해야 하는 라이브러리라면 굳이 옵션으로 주시지 않으셔도 됩니다.

      [CATALINA_HOME]/common/lib 디렉토리안에 필요한 라이브러리를 넣어두시면 톰캣 스타트업시 별도의 클래스패스를
      잡지 않아도 자동 참조를 시도 합니다.

    - 5단계 : Tomcat 재시작 하기
      여기까지 설정한 후 톰캣을 재시작 하시면 톰캣 어드민 콘솔을 통하여 다음과 같이 HOST가 추가되어 있는것을 확인 하실 수 있습니다.

호스트 추가 후호스트 추가 전

                                       호스트 추가 전                                                            호스트 추가 후


    - 6단계 : 접속 하기
      hosts ( C:\Windows\System32\drivers\etc\hosts ) 파일을 열어 위에서 추가한 호스트 ( www.new_site.com ) 를 
      로컬 호스트로 지정 한 후 
                127.0.0.1                www.new_site.com
      브라우저를 열고 http://www.new_site.com:[포트번호] 의 주소로 접속 해 본다.

2007/11/27 15:38 2007/11/27 15:38
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다
  1. 2007/12/06 13:05
    Tomcat 5.5에서의 <Context> Tracked from A2공간 - 도움되는 글을 쓰자

Tomcat/JSP와 한글 문제...

◎ Tomcat 4.x
단순히 JSP 혹은 서블릿의 최 상단에 request.setCharacterEncoding("euc-kr");을 하면 된다.
GET과 POST 방식에 상관없이 인코딩을 해준다.


◎ Tomcat 5.x
POST 방식은 request.setCharacterEncoding("euc-kr");로 계속 하면된다.
하지만 GET 방식은 server.xml의 설정 부분을 바꿔줘야만 한다.

Server.xml 보기



위에서 URIEncoding="euc-kr" 부분이다.그리고 아래의 port="8009" 부분은 mod_jk를 이용해서 Apache와 Tomcat 5.x 를 연동할 때 URIEncoding="euc-kr"을 지정할 필요가 있다.

URIEncoding으로 지정할 경우, 만약 웹 어플리케이션이 EUC-KR과 UTF-8을 각 요청 별로 따로 처리할 필요가 있을경우 그에 대응할 수 없다. 대신, useBodyEncodingForURI="true"을 사용하면 Tomcat 4.x와 동일한 방식으로 즉, request.setCharacterEncoding() 값에 따라 GET/POST 방식 모두를 처리할 수도 있다. (참조 : http://tomcat.apache.org/tomcat-5.5-doc/config/http.html)

결론적으로 Tomcat 4.x와 Tomcat 5.x 는 모두 request.setCharacterEncoding()이 필요하다는 사실에는 변함이 없다.
2007/03/20 11:38 2007/03/20 11:38
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다