mod_jk를 이용해서 Apache와 JBoss를 연동해 보겠다.

개요
1. 아파치를 다운로드 받는다. http://www.apache.org를 참조해라.
2. mod_jk 1.2.x를 다운로드 받는다. (웬만하면 구글에서 검색해 보셈.
   바이너리를 받아서 잘 되면 좋겠지만,웬만해서는 잘 안되니까..
  소스를 받아서 컴파일 하는게 아예 맘 편할듯 함)
3. Apache config 파일인 httpd.conf 에다가 mod_jk config에 대한 정보 등록한다.
4. mod_jk config 작성
5. mod_jk worker config 작성
6. Apache mod_jk 서비스 받을 URI config 작성
7. Apache 재구동
8. Tomcat config 재구성
9. JBoss 재구동
10.시험 하면 됨

시작 해볼까.
1. 아파치를 다운로드 받아서 설치 하셈. (APACHE_HOME은 아파치 설치 디렉토리로 생각함)
    머 설치하는 것도 쉽지는 않을 수 있는데, 모르는 것 있으면 구글에 물어보셈
2. mod_jk 1.2.x 다운로드 받으면 되는데 바이너리가 있고, 소스가 있는데 아예 바이너리는 단념하고,
   소스를 다운로드 받아서 , 컴파일 하는 것이 속 편함.
   컴파일러가 설치 안된 경우가 있는데 이 경우는 졸라 짱나지만 컴파일러를 어쨌거나 설치하길 권함.
   아는 형에게 물어보든, 구글 형에게 물어보든.
   mod_jk 1.2.X 소스를 받아 컴파일 하는 방법은 잘만되면 쉬움
   tip - src 파일을 저장할 때 "/" 부터 공백같은거 한글 같은걸로 이름짓지 말고 DOS시절 같이 이름짓으삼
   "/home/java/ajp connector/modjk/..." 이런식으로 "ajp connector"처럼 디렉토리 이름중에 공백들어가면
   곤란하삼...
   압축 푼다음 src 디텍도리 아래의 native 디렉토리로 옮긴 다음. 아래를 실행하삼
   "--with-apxs=/usr/sbin/apxs" 이부분은 apxs는 APACHE_HOME/bin에 있으니까..
   ./configure --with-apxs=/usr/local/apache2/bin/apxs 라고 해줄 수 있을 것
$> cd native
$> ./configure --with-apxs=/usr/sbin/apxs (or where ever the apxs/apxs2 is)
$> make
$> su -c 'make install'

 이러면 아마 mod_jk.so 라는 파일이 APACHE_HOME/modules/mod_jk.so 라는 이름으로 생길 것임

 3. Apache config에 mod_jk 모듈에 대해서 정보를 알려줄 차례인데...
 httpd.conf 파일을 열어서 다음 부분 추가해주삼
파일명: APACHE_HOME/conf/httpd.conf
# Include mod_jk configuration file
Include conf/mod-jk.conf

 4. 3번에서 mod-jk.conf 파일이 APAHCE_HOME/conf 밑에 있다고 했으니까
 mod-jk.conf 파일을 만들어서 APACHE_HOM/conf 밑에 갖다 두어야 함.
 mod-jk.conf 파일을 만들어야 하는데 이 파일은 mod-jk 모듈에 대한 메타정보를 갖고 있음.
파일명:  APACHE_HOME/conf/mod-jk.conf
내용은 아래와 같음
 
# Load mod_jk module
# Specify the filename of the mod_jk lib
LoadModule jk_module modules/mod_jk.so

# Where to find workers.properties
JkWorkersFile conf/workers.properties

# Where to put jk logs
JkLogFile logs/mod_jk.log

# Set the jk log level [debug/error/info]
JkLogLevel info

# Select the log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"

# JkOptions indicates to send SSK KEY SIZE
# Note: Changed from +ForwardURICompat.
# See http://tomcat.apache.org/security-jk.html
JkOptions +ForwardKeySize +ForwardURICompatUnparsed -ForwardDirectories

# JkRequestLogFormat
JkRequestLogFormat "%w %V %T"

# You can use external file for mount points
# It will be checked for updates each 60 secondes
# The format of the file is : /url=worker
# /examples/*=loadbalancer
JkMountFile conf/uriworkermap.properties

특별한 내용은 아니지만 조금 살펴보면 젤로 중요한 아파치가 사용할 mod_jk 모듈의 위치가
APACHE_HOME/modules 디렉토리의 mod_jk.so 파일이라는 거, 바로 요넘 modules/mod_jk.so 되겠다.
그다음은 mod_jk 모듈이 로그를 남기는데 그 로그 파일의 위치가 APACHE_HOME/logs 디렉토리의
mod_jk.log 란 얘긴데 ..가끔 살펴보게 되니까 참고 하삼

그리고 무지 중요한 것 중 하나가 마운드 포인드를 설정하는 것인데
나는 이 포인터를 외부 파일로 정하겠다는 것이고 , 그 파일의 위치가 APACHE_HOME/conf 디렉토리에 있는
uriworkermap.properties로 이름 지었다. 이넘 설명은 이따가

5. worker config 작성
파일명: APACHE_HOME/conf/workers.properties
기본적으로 아파치 웹서버가 JBoss로 http request를 forwarding하는데 로드 밸랜싱하게 worker를 작성할 수
있지만 주로 그렇게 사용하지 않고 단순히 1:1로 사용하므로 여기서는 쉬운거만 설명

 Define list of workers that will be used
# for mapping requests
# The configuration directives are valid
# for the mod_jk version 1.2.18 and later
worker.list=xbrlworker

# Define Node1
# modify the host as your host IP or DNS name
worker.xbrlworker.port=8009
worker.xbrlworker.host=localhost
worker.xbrlworker.type=ajp13

여기서는 worker가 xbrlworker 한 넘 밖에 없음. "xbrlworker"라고 이름지은 거는 내맘
다르게 하고 싶은 사람은 worker.list=anyname 으로하면됨
일단 worker이름을 "xbrlworker"로 지었으면 아래 부분 노드를 정할때 일관되게 사용해야함.
무슨 말인지 알것임. 이거 모르면 계속 읽지 말고 딴데 가삼

6. 아파치로 요청오는 URI를 worker랑 매핑시키는 파일 작성해야함
파일명: APACHE_HOME/conf/uriworkermap.properties
# Simple worker configuration file
#

# Mount the Servlet context to the ajp13 worker
/jmx-console=xbrlworker
/jmx-console/*=xbrlworker
/web-console=xbrlworker
/web-console/*=xbrlworker

이거 보면 무슨뜻인지 알아야함. 만약 모르면 당신 내공이 많이 모자른 거니 공부좀 더 하삼.
보통 struts를 사용하는 넘들은 /*.do=xbrlworker라고 하면 되겠지?
.jsp 쓰는 넘들은 /*.jsp=xbrlworker라고 하든가...
하여간 응용해서 사용하삼. 물론 worker 이름은 아까 worker이름과 같아야함

7. 아파치 새로 시작함
cd APACHE_HOME
bin/apachectl stop <enter>
bin/apachectl start <enter>
이러면 대충 될것임

8. tomcat config 등록
 JBoss 버전에 따라 조금 씩 다르지만...하여간 web container,servlet container를 찾아 그넘의 configuration
파일을 수정한다.
tip :
cd JBOSS_HOME
find . -name 'server.xml' -print

나 같은 경우는 파일명이
server/default/deploy/jboss-web.deployer/server.xml

열어봐서 아래의 강조한 부분을 추가하삼.. jvmRoute attribute를 추가하고 값을 worker 이름으로 하삼
 <Connector port="8009" address="${jboss.bind.address}" protocol="AJP/1.3"
         emptySessionPath="true" enableLookups="false" redirectPort="8443" />

      <Engine name="jboss.web" defaultHost="localhost" jvmRoute="xbrlworker" >

9. JBoss의 UseJK 값을 활성화 시키삼
  server.xml 이 있는 디렉토리 아래 META-INF 폴더 밑에 "jboss-server.xml" 파일이 있는데
이 넘을 열어서 수정하는데
 원래 값은 false인데 이넘을 true로 수정하삼

  <attribute name="UseJK">true</attribute>

10. JBoss를 다시 시작시키고..

http://yourserver/jmx-console을 한번 접속 해보삼..

이해 되삼?








 
 
   
  

Posted by
,