2007년 3월 26일 월요일

Linux에서 Apache 2.0.59 와 Tomcat 5.0.28 연동하기

Linux에서 Apache 2.0.59 와 Tomcat 5.0.28 연동하기


Apache 2.0.59 및 Tomcat 5.0.28을 연동하기 위해서 먼저 서버에 Apache 및 Tomcat이 깔린 상태여야 한다.
Tomcat은 java기반의 web server로서 Tomcat을 설치하기 위해서는 우선 먼저 JDK가 서버에 깔려있어야 한다.

http://java.sun.com 에 가서 최신 j2sdk 1.5버젼을 다운로드 받는다.
(참고로 톰캣 5.0에는 필히 jdk 1.5 버젼대 여야만 제대로 동작한다.)

다운로드 받은 소스를 적당히 위치에 저장하고서 압축을 해제하고 필요한 환경변수만 적어주면 Java설치는 끝이난다.

Java 설치하기

사용자 삽입 이미지




배포파일 jdk-1_5_0_08-linux-i586.bin

적당한 위치로 배포파일을 옮겨서 파일을 실행시킨다
실행 전 배포파일의 퍼미션을 확인하여 실행가능한 퍼미션을 갖도록 설정을 한다.

shell> mv jdk-1_5_0_08-linux-i586.bin /usr/local/src
shell> cd /usr/local/src
shell> chmod 755 jdk-1_5_0_08-linux-i586.bin
shell> ./jdk-1_5_0_08-linux-i586.bin

사용권 계약이 화면에 출력되면 y 또는 yes를 입력하여 동의한다.
이 후 설치가 계속 진행되어 jdk1.5.0_08 폴더가 생긴다.
다음 디렉토리를 /usr/local/java에 옮긴다.

mv jdk1.5.0_08 /usr/local/java

/etc/profile을 편집하여 PATH 설정을 해준다.
profile 첫부분에 다음을 추가해준다.

shell> vi /etc/profile

JAVA_HOME=/usr/local/java
PATH=$PATH:$JAVA_HOME/bin
export JAVA_HOME

변경된 설정을 시스템에 적용시킨다.

shell> source /etc/profile

임의의 위치에서 java를 실행시킨다.

shell> java

JAVA option들이 화면에 출력되면 성공적으로 설치가 이루어진 것이다.

Apache2 설치하기

사용자 삽입 이미지






기존에 존재하는 RPM 패키지를 찾아서 삭제한다.

shell> rpm -qa | grep httpd
shell> rpm -e [httpd RPM name]

현재 Apache 웹데몬이 실행되고 있다면 실행을 중지시킨다.

shell> /etc/init.d/httpd stop

http://httpd.apache.org/download.cgi 에서 Apache 2.0.59를 다운로드 받는다.
리눅스에서 설치할 Apache의 배포본은 모두 소스 형식으로 제공된다.

배포파일 httpd-2.0.59.tar.gz

적당한 위치에서 다운로드 받은 배포파일의 압축을 푼다.

shell> mv httpd-2.0.59.tar.gz /usr/local/src
shell> tar xvfz httpd-2.0.59.tar.gz

생성된 디렉토리 httpd-2.0.59로 이동한다.

shell> cd httpd-2.0.59

다음과 같은 옵션을 사용하여 configure를 진행한다.
옵션, 모듈 및 DSO에 대한 자세한 사항은 이후 추가적으로 설명할 것이다.

shell> ./configure --prefix=/usr/local/apache2 --enable-modules=so --enable-so

이어서 컴파일과 인스톨을 실행한다.

shell> make
shell> make install

위의 과정으로 설치를 진행하면 Apache의 root 디렉토리는 /usr/local/apache2가 되고, 모든 관련 파일들은 이 디렉토리속에 저장되게 된다.
디렉토리에 대한 정보는 /usr/local/src/httpd-2.0.59/config.layout을 통해 확인할수 있다.

다음으로 /usr/local/apache2/conf 디렉토리의 설정파일을 변경한다.

메일주소 및 웹서버 주소를 정확히 기입한후 앞에 #부호를 제거한다.

아파치 웹서버를 구동한다.

shell> /usr/local/apache2/bin/apachectl start

아파치 웹서버를 중지시키려면 아래 명령어를 실행하면 된다.

shell> /usr/local/apache2/bin/apachectl stop

* configure 옵션 (autoconf 출력옵션)

--prefix=/usr/local/apache2
--prefix는 말그대로 apache를 지정된 폴더에 일괄로 설치하겠다는 뜻이다. 여기서는 컴파일된 아파치 파일들이 /usr/local/apache2 폴더에 설치가 되여진다.

--enable-modules=so
mod_so(so_module)를 Apache에 컴파일하여 포함시킨다.(모듈의 정적 컴파일)
기본형은 --enable-modules=[MODULE-LIST]로 공백으로 구분한 [MODULE-LIST]에 나와있는 모듈들을 컴파일하여 포함한다.

--enable-so
Apache가 실행시 특별한 옵션없이 자동으로 동적공유객체(DSO-Dynamic Shared Objects)를 읽어들일 수 있도록 하기 위한 설정옵션이다.

* 모듈

Apache는 모듈화된 설계로 이루어진 프로그램이다.
모듈은 특별한 기능을 수행하기 위한 작은 프로그램으로 이해할 수 있다.
즉, 모듈마다 각각의 역할이 다르기 때문에 핵심 구현부 또는 실행부에 추가적으로 포함시켜 원하는 기능을 선택적으로 사용할 수 있다. 
Apache의 핵심 기능을 구현하는 모듈은 core이고 core를 기반으로 모듈을 추가하여 확장된 기능을 사용할 수 있다.
모듈은 Apache 컴파일시 정적으로 포함시킬 수 있고, 또는 DSO mechanism에 의해 Apache 컴파일 이후 추가적으로 포함하여 사용할 수 있다.
DSO(Dynamic Shared Objects)를 지원하기 위해서는 컴파일시 configure 옵션으로 --enable-rule=SHARED_CORE를 추가하여 DSO 지원 형식으로 Apache를 컴파일하여야 하며, mod_so 모듈을 컴파일시 포함시켜야 한다.
mod_so 모듈은 core를 제외하고 DSO가 될 수 없는 유일한 모듈로서 Apache 핵심에 정적으로 컴파일해야 하며, DSO로 컴파일된 모듈을 Apache에서 읽어들이기 위한 기능을 제공한다.
따라서 configure 진행시 일반적으로 mod_so를 포함하도록 한다.

* 동적공유객체(DSO-Dynamic Shared Objects)

Apache가 동적으로 load할 수 있는 객체이다.
core와 mod_so를 제외한 다른 모든 아파치 모듈 소스를 DSO 형식의 모듈로 컴파일하여 Apache에서 load하여 사용할 수 있다.
DSO로 사용할 아파치 모듈을 쉽게 만들기 위해서 apxs(Apache Extension Tool)라는 지원프로그램이 있다.
이 프로그램으로 아파치 배포본 소스 트리 없이, DSO 지원을 위한 플랫폼 특유의 컴파일러 옵션과 링커 옵션을 고려하지 않고 모듈 소스를 DSO 모듈로 쉽게 컴파일할 수 있다.
PHP와 Tomcat 등 외부 프로그램에서 제공하는 DSO 모듈은 프로그램 configure시 apxs를 사용한 옵션을 통해 프로그램과 함께 컴파일되어 생성된다.

Tomcat 5 설치

사용자 삽입 이미지







위에서 JDK설치가 끝났으면 사실 Tomcat 5 설치는 쉬워진 셈이다.
단순히 압축만 풀면 Tomcat 5의 설치가 끝난다.

* Java Servlet Container

JVM 상에서 WEB 서비스를 위한 Java Servlet API를 구현하여 서비스 해주는 Java Program으로, Servlet Container는 Client의 http 요청을 웹서버를 통해 전달받아서 Application Servlet에 전달하고, Servlet의 http 응답 메시지를 웹서버에게 전달해서 Client로 돌려주는 역할을 한다.

* Servlet Container의 종류

1) Sun Microsystems 제공 Servlet Container
JSDK(Java Servlet Development Kit)
JSWDK(JavaServer Web Development Kit)
J2EE(Java2 SDK, Enterprise Edition)
Java Web Server(iPlanet Web Server)

2) Apache 제공 Servlet Container
Apache JServ, Tomcat

3) 기타 Servlet Container
JRun/JRun Pro, Resin, WebLogic, Web Sphere, IAS

* Tomcat

Tomcat은 Apache Software Foundation의 Jakarta 프로젝트의 일환으로 개발중인 소프트웨어이다.
Tomcat은 Java Servlet과 Java Server Page를 사용할 수 있도록 하는 Servlet Container이며 독립적으로 웹서버의 기능을 수행한다. 그러나 일반 html 문서도 Servlet Container를 통해 번역되므로 수행속도가 느리고 웹서버로서의 기능에 제한이 있으므로 보통 다양한 모듈과 막강한 기능을 가지고 있는 Apache 웹서버와 연동하여 사용한다.

배포본은 binary와 source 형식으로 제공된다. 여기서는 바이너리 배포본의 설치만 설명하련다. The Apache Jakarta Project 홈페이지의 Downloads 부분에 있는 CVS repositories는 현재 개발중인 소스들을 확인하고 다운로드 받을 수 있는 페이지이다.

http://tomcat.apache.org/download-55.cgi에서 Tomcat 5.0.28의 tarball 형식의 배포본을 다운로드 받는다.

배포파일 jakarta-tomcat-5.0.28.tar.gz

적당한 위치(설치하고자 하는 경로)에서 압축을 풀어준다.
바이너리 배포본은 압축을 풀어줌으로 기본적인 설치가 완료된 것이다.

shell> cp jakarta-tomcat-5.0.28.tar.gz /usr/local/src
shell> cd /usr/local/src
shell> tar xvfz jakarta-tomcat-5.0.28.tar.gz
shell> mv /usr/local/src/Jakarta-tomcat-5.0.28 /usr/local/tomcat

Jakarta-tomcat-5.0.28 디렉토리가 생성되고 압축이 풀린다.
실행파일이 들어있는 디렉토리로 이동해서 Tomcat을 실행시켜본다.

shell> cd /usr/local/tomcat/bin
shell> ./startup.sh
또는
shell> ./catalina.sh start

Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JAVA_HOME:       /usr/local/java

위의 메시지가 나오면 Tomcat이 정상적으로 작동하는 것이다.
클라이언트에서 웹브라우저를 통해 다음의 주소로 접속한다.

http://localhost:8080 또는 http://설치한서버의주소:8080

정상적으로 Tomcat이 작동하고 있다면 브라우저에 Tomcat 관련 문서가 나타날 것이다.

만일, 정상적으로 작동하지 않는다면 J2SE의 설치가 제대로 이루어지지 않았거나 PATH 설정이 올바르게 이루어지지 않아서이다.
/etc/profile을 에디터로 열어서 J2SE 설치 시 PATH 설정한 부분을 확인해 보자.

마지막으로 PATH를 설정해준다.
PATH 설정은 /etc/profile을 편집하여 이루어진다.
/etc/profile을 에디터로 열어서 J2SE 설치 시 PATH 설정한 부분에 다음을 추가한다.

shell> vi /etc/profile

JAVA_HOME=/usr/local/java
CATALINA_HOME=/usr/local/tomcat
PATH=$PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin
export JAVA_HOME CATALINA_HOME

변경된 설정을 시스템에 적용시킨다.

shell> source /etc/profile

PATH를 설정해주었으므로 임의의 위치에서 Tomcat을 실행시킬 수 있다.

JK2를 이용한 Apache2 웹서버와 Tomcat5의 연동

The Apache Jakarta Project 사이트에서 JK2 connector를 다운로드 받는다.
JK2의 binary 배포본은 Solaris와 WIN32용 만이 배포되고 있으므로 소스 형태의 배포본을 다운로드 받아야 한다.
http://jakarta.apache.org/site/sourceindex.cgi 에서 JK 2.0.4 Source Release tar.gz를 다운로드 받는다.
배포파일 jakarta-tomcat-connectors-jk2-src-current.tar.gz

JK2 connector 소스를 컴파일 하면 얻을 수 있는 것이 mod_jk2.so 모듈이다.
Apache 웹서버와 Tomcat을 연동할 mod_jk2.so 모듈을 얻는 것이 컴파일의 목적이다.

적당한 위치에서 압축을 풀어준다.
소스들을 컴파일하고 필요한 파일들을 이동시키면 더 이상 사용하지 않기 때문에 /usr/local/src에서 압축을 풀어주겠다.

shell> mv jakarta-tomcat-connectors-jk2-src-current.tar.gz /usr/local/src
shell> cd /usr/local/src
shell> tar xvfz jakarta-tomcat-connectors-jk2-src-current.tar.gz

압축이 풀리면 해당 디렉토리로 이동한다.

shell> cd jakarta-tomcat-connectors-jk2-2.0.4-src/

빌드설정 쉘 스크립트를 실행시킨다.

shell> cd jk/native2
shell> ./buildconf.sh


아래와 같이 .configure하고 make로 컴파일을 진행한다.

shell> ./configure --with-apxs2=/usr/local/apache2/bin/apxs
shell> make

configure 옵션(autoconf 출력옵션) --with-apxs2[=FILE]
Apache 2.0 에서 공유할 DSO 모듈을 build하기 위해 사용한다.
FILE은 Apache apxs tool이 있는 경로를 나타낸다.

shell> cd ../build/jk2/apache2
shell> /usr/local/apache2/bin/apxs -n jk2 -i mod_jk2.so

1) Apache의 환경파일 수정한다.

shell> vi /usr/local/apache2/conf/httpd.conf

233번째 줄정도에 추가한다. 이것은 외부에 있는 jk2모듈을 끌어들임으로서 apache와 tomcat을 정확인 연동하기 위해서 이다.

LoadModule jk2_module modules/mod_jk2.so
추가해줌(396줄) :Index.jsp
DirectoryIndex index.html index.html.var index.jsp

2) workers2.properties 생성한다.

shell> vi  /usr/local/apache2/conf/workers2.properties

아래 부분들을 그대로 복사하여 workers2.properties파일에 넣고 저장한다.

[shm]
file=/usr/local/apache2/logs/jk2.shm
size=1048576

[channel.socket:localhost:8009]
port=8009
host=127.0.0.1

# Defile The Worker
[ajp13:localhost:8009]
channel=channel.socket:localhost:8009

# Anounce Status Worker
# [status:status]

# Announce Uri mapping
[uri:/examples/*]
worker=ajp13:localhost:8009

# Uri mapping
[uri:/*]
worker=ajp13:localhost:8009

재시작할때는 먼저 톰캣을 시동하고 다시 아파치를 시동한다.
자동시작하려면 /etc/rc.d/rc.local속에 아래 스크립트를 추가해야 한다.

shell> export JAVA_HOME=/usr/local/java
shell> /usr/local/tomcat/bin/catalina.sh start
shell> /usr/local/apache2/bin/apachectl start

여기서 주의할점은 톰캣이 시동시 JAVA_HOME이 꼭 PATH에 잡혀있어야함으로 필히 위에서와 같이 설정해주어야 한다.^^

댓글 없음:

댓글 쓰기