Apache + Tomcat + mod_jk 설정 후 AJP 연결하는 서버 환경 설정

입질쾌감 물때표

아파치 + 톰캣 설정하는 방법

Apache와 Tomcat을 연동하는 이유

Tomcat 서버는 본연의 임무인 서블릿 컨테이너의 역할만 하고, Apache HTTP Server는 웹서버의 역할을 하도록 각각의 기능을 분리하기 위해 연동을 할 수 있다. Apache HTTP Server에서 제공하는 편리한 기능을 사용하기 위해서 연동을 할수 있다. 대규모 사용자가 사용하는 시스템을 구축할 때 웹 서버인 아파치와 연동을 하면 부하 분산의 효과를 가질 수 있다. mod_jk의 Load Balancing과 FailOver기능을 사용하여 안정적으로 운영 할 수 있다.

Apache와 Tomcat 연동하기

@@ mod_jk 다운로드 및 설정
http://www.apache.org/dist/tomcat/tomcat­connectors/jk/binaries/windows/
에서 버전에 맞는 파일을 다운 받아 $APACHE_HOME/modules 디렉토리에 복사한다.
Apache HTTP 서버 2.2.x 버전을 설치하였다면 tomcat­connectors­1.2.37­windows­i386­httpd­2.2.x.zip 파일을 다운 받는다.
httpd.conf 파일의 LoadModule 부분에 mod_jk Module을 추가한다.

@@ 우분투에서 다음의 커맨드로 설치가 가능하다.

sudo apt-get install libapache2-mod-jk 

@@ httpd.conf 파일

# jk_module 추가
LoadModule jk_module modules/mod_jk.so

@@ 우분투에서 활성화, 그러나 패키지를 설치하면 자동으로 enable 되어 있을 것이다.

sudo a2enmod

workers.properties 파일 설정

Apache와 tomcat를 연동하기위해서는 workers.properties 파일을 설정해야 한다.
$APACHE_HOME/conf/workers.properties 파일을 아래 예제와 같이 생성한다.
workers.properties 파일은 일반적으로 httpd.conf 파일과 같은 디렉토리에 위치하게 설정한다.

worker.list=sample
# 톰캣 server.xml 파일 AJP/1.3 Connector의 Port를 입력한다.
worker.sample.port=8009
# 톰캣 server 호스트
worker.sample.host=localhost
# 아파치 + 톰캣 통신 프로토콜
worker.sample.type=ajp13

%% 참고
톰캣 워커는(Tomcat worker) 웹서버로부터의 서블릿 요청을 톰캣 프로세스(Worker)에게 전달하여 요청을 처리하는 톰캣 인스턴스이다.
대부분 하나의 worker를 사용하나, load 밸런싱이나 site 파티셔닝을 위해 여러개의 worker를 사용 할 수 있다.
워커 타입에는 ajp12, ajp13, jni, lb 등이 있다.

workers.properties 경로 지정

httpd.conf 파일에 workers.properties 파일 경로를 지정한다.

@@ httpd.conf 파일

# workers.properties 파일 추가
JkWorkersFile conf/workers.properties

VirtualHost 설정 변경

@@ $APACHE_HOME/conf/vhosts/extra/httpd­vhost.conf 파일의 VirtualHost의 DocumentRoot를 Tomcat 디렉토리로 변경하자

@@ JkMount 설정을 추가하자 httpd­-vhost.conf 파일 설정

NameVirtualHost *:80

ServerName test.apache.org
DocumentRoot C:\dev\apache­tomcat­6.0.32webapps\ROOT

# URL중 jsp로 오는 Request만 Tomcat에서 처리 함
# sample은 workers.properties에서 등록한 worker이름 JkMount/*.jsp sample
# servlet 예제 실행을 위해서 추가 JkMount /examples/* sample

Tomcat의 server.xml 수정

태그의 docBase 디렉토리를 Apache HTTP Server 설정과 동일하게 Tomcat 서버의 webapps/ROOT 디렉토리를 절대경로로 지정하자.
원하는 디렉토리를 Document Root로 사용하면 된다.

우분투에서 mod-jk 설정

$ apt-get install libapache2-mod-jk
$ a2enmod jk

@@ jk.conf 파일 내용 확인하기

cat /etc/apache2/mods-enabled/jk.conf
vi /etc/libapache2-mod-jk/workers.properties

@@ Jsp Application이 설치된 곳을 가르키도록 설정

vi /etc/apache2/sites-available/default

DocumentRoot /var/lib/tomcat7/webapps/ROOT/
JkMount /*.jsp ajp13

@@ server.xml에서 인식하고 있는 HOST 설정.

아래처럼 appBase 경로 아래에는 ROOT가 있어야 한다.

root@mainframe:/home/ryu/public_html/root# tree
.
├── build
├── index.html
├── logs
│   ├── log4j.log
│   └── log4j.log.1
├── mlink_erq.zip
├── ROOT
│   ├── board
│   │   ├── board_master_edit.jsp
│   │   ├── board_master_insert_success.jsp
│   │   ├── board_master_list.jsp
│   │   ├── board_master_success.jsp
│   │   └── success.jsp
│   ├── css
│   │   └── CVS
│   │   ├── Entries
│   │   ├── Repository
│   │   └── Root
vi /etc/tomcat7/server.xml

우선적으로 커넥터가 2개가 있는데 다음과 같이 구분해서 생각해야 한다.

1. 톰캣에서 HTTP 프로토콜로 연결해 주는 서블릿 커넥터, 따라서 아래의 8080 포트로 웹페이지가 제대로 나와야 한다.
2. AJP 프로토콜, 즉 아파치에서 /*.jsp로의 요청이 왔을때에는 무조건 ajp13 워크로 톰캣에게 던진다. 따라서 DocumentRoot /var/lib/tomcat7/webapps/ROOT/ 해당 위치와는 별개로 생각해서 세팅해야 한다.

@@ 로그확인하기

tail -f /var/log/apache2/mod_jk.log

우분투에서 톰캣 환경 보는 방법

$ /usr/share/tomcat7/bin/version.sh
Using CATALINA_BASE: /usr/share/tomcat7
Using CATALINA_HOME: /usr/share/tomcat7
Using CATALINA_TMPDIR: /usr/share/tomcat7/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/share/tomcat7/bin/bootstrap.jar:/usr/share/tomcat7/bin/tomcat-juli.jar
Server version: Apache Tomcat/7.0.35
Server built: May 24 2013 09:52:20
Server number: 7.0.35.0
OS Name: Linux
OS Version: 3.8.0-19-generic
Architecture: i386
JVM Version: 1.7.0_51-b00
JVM Vendor: Oracle Corporation

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다