2009. 6. 29. 16:35
개발/JSP/Servlet
Apache 설정 및 톰캣 연동
1. 아파치, 톰캣 설치
1.1 윈도우에서 설치
Tomcat 설치
- Tomcat 5.5 Download (zip 파일로 다운로드)
- URL : http://tomcat.apache.org/download-55.cgi
Apache 설치
- Apache HTTP Server 2.0.xx 버전으로 다운로드
- URL : http://httpd.apache.org/download.cgi
- 파일다운
mod_jk 다운로드
- apache, tomcat 버전에 맞게 다운 받아야 한다.
- URL : http://tomcat.apache.org/dev/dist/tomcat-connectors/jk/binaries/win32/jk-1.2.23/
- 파일다운
1.2 리눅스에서 설치
리눅스 아파치 설치
linux 에서 mod_jk 생성
- URL : http://tomcat.apache.org/connectors-doc/
- download : http://www.apache.org/dist/tomcat/tomcat-connectors/jk/source/jk-1.2.26/tomcat-connectors-1.2.26-src.tar.gz
- 설치순서
- gzip -d tomcat-connectors-1.2.26-src.tar.gz
- tar -xvf tomcat-connectors-1.2.26-src.tar
- cd native
- ./configure --with-apxs=/usr/local/apache2/bin/apxs
- make
- make install
2. 아파치, 톰캣 연동
참고1. server.xml의 구조
<Server> | +---<Service> | +---<Connector> | +---<Engine> | +---<DefaultContext> | +---<Realm> | +---<Logger> | +---<Host> | +---<Context> | +---<Value> | +---<Realm> | +---<Logger>
2.1 Tomcat Connectors 복사
- 다운로드한 mod_jk(mod_jk.so)파일을 %APACHE_HOME%/modules 안에 복사한다.
2.2 workers.properties 파일 설정
참고2. Tomcat Worker
|
- apache와 tomcat를 연동하기위해서는 workers.properties 파일을 설정해야 한다.
- %APACHE_HOME%/conf/workers.properties
workers.properties 예제
workers.tomcat_home=D:\tomcat5.5 workers.java_home=C:\jdk1.5 ps=/ worker.list=oracleclub, wiki, dev #local.oracleclub.com worker.oracleclub.port=7003 worker.oracleclub.host=localhost worker.oracleclub.type=ajp13 #wiki.oracleclub.com worker.wiki.port=7004 worker.wiki.host=localhost worker.wiki.type=ajp13 #dev.oracleclub.com worker.dev.port=7005 worker.dev.host=localhost worker.dev.type=ajp13
참고3. 톰캣의 <Connector> 요소
|
2.3 httpd.conf 파일 설정
- %APACHE_HOME%/conf/httpd.conf 파일을 수정
- jk_module 추가
- workers.properties 파일 추가
- virtualhost 설정 추가 (이 문서에서는 "conf/vhosts/*.conf" 파일로 추가 하였음)
httpd.conf
# jk_module 추가 LoadModule jk_module modules/mod_jk-apache-2.0.58.so # workers.properties 파일 추가 JkWorkersFile "C:\Program Files\Apache Group\Apache2\conf\workers.properties" # virtualhost 설정 추가 include "conf/vhosts/*.conf"
2.4 가상 호스트 설정
- %APACHE_HOME%/conf/vhosts/dev.conf 파일을 생성 한 후 아래의 내용을 추가한다.
dev.conf
<VirtualHost 127.0.0.1:80> ServerName dev.oracleclub.com ServerAlias oracleclub.com ServerAlias web.oracleclub.com DocumentRoot C:\struts2\webapp ErrorLog logs/dev.oracleclub.com-error.log CustomLog logs/dev.oracleclub.com-access.log common JkMount /*.ok dev </VirtualHost>
- mod_jk의 JkMount 지시자를 사용해 지정된 URL 들을 Tomcat으로 할당할 수 있다.
- JkMount /*.ok dev URI에 .ok로 오는 요청은 workers.properties에 설정된 dev worker로 보낸다.
2.5 톰캣 server.xml 파일 수정
- workers.properties의 AJP/1.3 포트와 톰캣 Connector의 포트를 일치 시킨다.
server.xml
<?xml version="1.0" encoding="UTF-8"?> <Server port="20005" shutdown="SHUTDOWN"> <Service name="Tomcat-Apache-mod_jk"> <Connector port="7005" enableLookups="false" redirectPort="10445" protocol="AJP/1.3" URIEncoding="euc-kr" /> <Engine name="webhosting" defaultHost="localhost"> <Host name="dev.oracleclub.com" appBase="oracleclub" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Alias>oracleclub.com</Alias> <Alias>web.oracleclub.com</Alias> <Context path="" docBase="C:/struts2/webapp" reloadable="true" workDir="C:/struts2/webapp/WEB-INF/work" /> </Host> </Engine> </Service> </Server>
2.6 hosts 파일 변경
- 127.0.0.1 dev.oracleclub.com
3. 가상 호스트 예제
하나의 IP로 여러개의 가상 호스트를 설정하는 방법을 알아보도록 하자. |
3.1 이름 기반 가상 호스트 설정
- Apache는 HTTP의 Host 헤더를 이용하여 여러개의 호스트명을 하나의 IP 주소로 사용하는 것을 가능하게 한다.
- httpd.conf파일에 NameVirtualHost 를 설정하여 이름기반의 가상 호스트를 사용 할 수 있다.(꼭 설정해야 함)
- 아래 코드는 이름기반 가상 호스트 설정 예제이다.
httpd.conf
# 127.0.0.1에 연결되는 모든 요청을 Host 헤더의 내용을 기준으로 처리한다. NameVirtualHost 127.0.0.1:80 Listen 80 <VirtualHost 127.0.0.1:80> ServerName dev.oracleclub.com DocumentRoot C:\struts2\webapp </VirtualHost> <VirtualHost 127.0.0.1:80> ServerName local.oracleclub.com DocumentRoot C:\oracleclub\webapp </VirtualHost> <VirtualHost 127.0.0.1:80> ServerName wiki.oracleclub.com DocumentRoot D:\confluence-2.7-std\confluence </VirtualHost>
3.2 IP 기반 가상 호스트 설정
- 각 호스트별로 하나의 IP 주소를 할당하는 방법.
httpd.conf
Listen 192.168.1.1:80 Listen 192.168.1.2:80 <VirtualHost 192.168.1.1:80> DocumentRoot C:\struts2\webapp </VirtualHost> <VirtualHost 192.168.1.2:80> DocumentRoot C:\oracleclub\webapp </VirtualHost>
4. Rewrite Rule
- mod_rewrite module은 주소 재작성 패턴을 URL에 적용한다.
- 패턴은 정규 표현식(regular expression)을 의미하며 이 정규식에 match가 되는 pattern을 요청한 url에서 출력 하게 된다.
4.1 mod_rewrite 설치
- apache 설치시 Configure 실행시에 --enable-rewrite 옵션을 추가한다.
- apache 설치 이후 추가 설치시
- 아파치 압축 푼 디렉토리로 이동 : cd /usr/local/httpd-2.0.63/modules/mappers
- apxs를 이용해 새 모듈 추가 : /usr/local/apache2/bin/apxs -aic mod_rewrite.c
4.2 Rewrite 모듈 지시자
RewriteEngine
- Rewriteing 엔진을 사용할지 여부를 설정
- 디폴트 설정은 Off, RewriteEngine On 으로 설정하지 않는 이상 Rewritng 엔진을 사용할 수 없다.
- 설정문법 : RewriteEngine On|Off
RewriteRule
- Rewrite 모듈의 실질적인 Rewrite 규칙들을 적용 한다.
- Input URL을 Return URL로 변경하기 위한 규칙들을 설정 한다.
- 아래는 RewriteRule을 이용해 퍼머링크를 만드는 예제다.
<IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^/$ /main.ok [R] RewriteRule ^/community/([0-9]+)$ /articlelist.ok?article.communityId=$1 [PT] RewriteRule ^/article/([0-9]+)$ /articleview.ok?article.articleId=$1 [PT] </IfModule>
- RewriteRule 플래그
- F(forbidden) : 요청하는 페이지를 403 에러로 redirect 시킵니다.
- G(gone) : 요청하는 페이지를 410 에러로 redirect 시킵니다.
- R(redirect) : Return URL로 redirect 한다.
- PT(passthrough) : Input URL을 그대로 유지하며 Return URL을 실행한다.
- http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html
RewriteCond
- RewriteCond 지시자는 RewriteRule 과 함께 사용된다.
- RewriteCond 다음에 오는 RewriteRule은 RewrieteCond 에서 설정한 패턴과 일치해야지만 RewriteRule들을 실행한다.
- 주로 서브도메인을 생성할 때 사용한다.
- http://system.neulwon.com/bbs/?mid=linux_dns&page=1&document_srl=202
참고4. 정규표현식 기초. : 다수의 한문자 ? : 0개 이상의 한문자 * : 0개 이상의 문자 또는 문자열 + : 1개 이상의 문자 또는 문자열 ^ : 문자열의 첫문(열)을 지정합니다. $ : 문자열의 끝 문자(열)을 지정합니다. (역슬래쉬) : 정규표현식에서 특별한 의미로 사용되는 문자의 특수기능을 제거합니다.(예:(, ), [, ] . 등) {n} : 정확히 n번 반복 {n,} : n번 이상 반복 {n,m} : n 이상 m 이하 반복 [chars] : 문자들의 범위 또는 표현할 수 있는 문자들을 설정합니다. 예) [a-z] : a 부터 z 까지의 소문자, [tT] : 소문자 t 또는 대문자 T 정규표현식 단축표현들 [:alpha:] : 알파벳. [a-zA-Z] 와 같은 표현 [:alnum:] : 알파벳과 숫자. [a-zA-Z0-9] 와 같은 표현 [:digit:] : 숫자 [0-9] 와 같은 표현 [:upper:] : 대문자. [A-Z] 와 같은 표현 |
5. 데모 및 실습
문서에 대하여
- 작성일자 : 김정식
- 작성자 : 2008년 7월 28일
- 참고자료: http://www.mojily.com/bbs/view.php?id=apm&no=12
- 이 문서는 오라클클럽 자바 웹 개발 스터디모임에서 작성하였습니다.
- 이 문서를 다른 블로그나 홈페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.
# 이 문서는 오라클클럽에서 작성하였습니다.
# 이 문서를 다른 블로그나 홈페이지에 게재하실 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
# 출처 : http://wiki.oracleclub.com/pages/viewpage.action?pageId=1507883&