글
이 문서는 80포트만이 열린 네트워크 환경에서 아파치(80포트)와 톰캣(8080포트)을 동시에 서비스 하기 위한
방법을 설명하고 있습니다.
* 시스템사항
Operating System: Ubuntu 9.04
Webserver: Apache 2.0.54
JDK: JDK 6.0
Servlet Container: Tomcat 6.0.18
Tomcat Connector: Jakarta Tomcat Connector mod_jk (not mod_jk2)
* 기본폴더
apache2 : /etc/apache2
tomcat_home : /usr/local/tomcat
java_home : /usr/lib/jvm/java-6-sun/
mod_jk : /usr/lib/apache2/modules/mod_jk.so
* 설정 순서
1. mod_jk 설치
2. workers.properties 파일 만들기
3. 톰캣의 server.xml 수정
4. apache2.conf 수정
5. VirtualHost 설정 파일 수정
==== 이하 Option ====
6. 톰캣의 context 문제점 해결방법
7. 가상호스팅
* 설정설명
1. mod_jk 설치
$ sudo apt-get install libapache2-mod-jk
2. workeers.properties 파일 만들기
$ sudo vi /etc/apache2/jk/workers.properties
#아래의 두 설정의 경로는 자신에 맞게 수정합니다.
workers.tomcat_home=/usr/local/tomcat
workers.java_home=/usr/lib/jvm/java-6-sun/
ps=/
#아래 반복되는 worker1 대신 다른 이름도 상관없습니다.
worker.list=worker1
worker.worker1.port=8009
worker.worker1.host=localhost
worker.worker1.type=ajp13
worker.worker1.lbfactor=1
worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=worker1
worker.inprocess.type=jni
worker.inprocess.class_path=$(workers.tomcat_home)$(ps)lib$(ps)tomcat.jar
worker.inprocess.cmd_line=start
worker.inprocess.jvm_lib=$(workers.java_home)$(ps)jre$(ps)lib$(ps)
i386$(ps)classic$(ps)libjvm.so
worker.inprocess.stdout=$(workers.tomcat_home)$(ps)logs$(ps)inprocess.stdout
worker.inprocess.stderr=$(workers.tomcat_home)$(ps)logs$(ps)inprocess.stderr
3. 톰캣의 server.xml 수정
톰캣/conf/server.xml 에 아래의 코드를 추가합니다.
$ su vi /usr/local/tomcat/conf/server.xml
Server 태그 바로 아래쪽에 Listener 태그가 적힌곳에 추가하면 됩니다.
modjk와 workersConfig의 경로에 주의해서 자신에 맞게 수정합니다.
<Listener className="org.apache.jk.config.ApacheConfig" modJk="/usr/lib/apache2/modules/mod_jk.so" workersConfig="/etc/apache2/workers.properties" />
톰캣을 재시작 합니다.
$ su /etc/init.d/tomcat restart
에러없이 재시작 되면 아래와 같은 파일이 생성됩니다.
/usr/local/tomcat/conf/auto/mod_jk.conf
4. apache2.conf 수정
/etc/apache2/apache2.conf 설정 파일에 아래의 코드를 추가합니다. 항상 경로에 신중하세요.
$vim /etc/apache2/apache2.conf
Include /usr/local/tomcat/conf/auto/mod_jk.conf
# Select the log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
# JkOptions indicate to send SSL KEY SIZE,
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
# JkRequestLogFormat set the request format
JkRequestLogFormat "%w %V %T"
# Globally deny access to the WEB-INF directory
<LocationMatch '.*WEB-INF.*'>
AllowOverride None
deny from all
</LocationMatch>
위의 코드에서 LocationMatch '.*WEB-INF.*' 부분이 중요합니다.
jsp에서 WEB-INF의 내용은 여러가지 설정을 갖고있는 중요한 부분이므로 볼 수 없도록 막아놓습니다.
5. VirtualHost 설정 파일 수정
이 문서는 /etc/apache2/sites-available/default 파일에 VirtualHost가 설정되어 있습니다.
파일을 열어보면 <VirtualHost *> 부분이 있습니다.
$ vi /etc/apache2/sites-available/default
이 부분의 DocumentRoot를 수정합니다.(경로주의)
DocumentRoot /usr/local/tomcat/webapps/ROOT
그리고 아래의 코드를 VirtualHost 태그사이에 추가해줍니다.(worker1에 주의)
JkMount /*.html worker1
JkMount /*.swf worker1
JkMount /*.jsp worker1
JkMount는 패턴에 해당하는 파일 또는 디렉토리를 톰캣이 처리하도록 하는 설정입니다.
파일을 저장하고 아파치를 재시작 합니다.
브라우저에서 http://127.0.0.1로 접속했을때 톰캣 페이지가 보이면 연동된 것입니다.
6. 톰캣의 context 문제점 해결방법
톰캣의 context가 문제가 될 수 있습니다.
컨텍스트의 경로는 DocumentRoot의 하위디렉토리인 것이 아니기 때문입니다.
아파치의 Alias 설정을 통해 문제를 해결 할 수 있습니다.
톰캣의 admin을 예로 들면 아래와 같습니다.
Alias /admin/ "/opt/tomcat/server/webapps/admin/"
JkMount /admin worker1
JkMount /admin/* worker1
7. 가상호스팅
아파치, 톰캣 각각의 가상호스팅 설정에 대해서 자세히 다루지는 않겠습니다.
아파치, 톰캣 두개의 가상호스팅 설정이 일치해야 연동에 문제가 없습니다.
아파치의 가상호스팅
<VirtualHost test.ani>
DocumentRoot /var/www/test
JkMount /*.jsp worker1
</VirtualHost>
톰캣의 가상호스팅(server.xml)
<Host appBase="/var/www/test" name="test.com">
<Context path="" docBase="" debug="0" reloadable="true"/>
</Host>
'Web' 카테고리의 다른 글
Tomcat 서버 설정파일(server.xml) (0) | 2009.03.12 |
---|---|
Apache Tomcat 설정 (0) | 2009.03.12 |
TOMCAT SERVLET MAPPING (0) | 2009.03.12 |
톰켓6(Tomcat6) root 경로 디렉토리 경로 변경 및 설정 (1) | 2009.03.12 |
톰켓6 (tomcat6) 관리자 유저 생성하기 (0) | 2009.03.12 |
RECENT COMMENT