Apache 와 Glassfish 연동 - Hoing...glassfish V2.1.1 톰캣은 J2EE 중 JSP와 서블릿을...

6
Apache 와 Glassfish 연동 2010 년 4 월 17 일 http://www.commit.co.kr 정 현 호 [email protected]

Transcript of Apache 와 Glassfish 연동 - Hoing...glassfish V2.1.1 톰캣은 J2EE 중 JSP와 서블릿을...

Page 1: Apache 와 Glassfish 연동 - Hoing...glassfish V2.1.1 톰캣은 J2EE 중 JSP와 서블릿을 중재하는 서블릿 컨테이너이지만 glassfish는 tomcat과 같은 오픈소스이며,

Apache 와 Glassfish 연동

2010 년 4 월 17 일

http://www.commit.co.kr 정 현 호

[email protected]

Page 2: Apache 와 Glassfish 연동 - Hoing...glassfish V2.1.1 톰캣은 J2EE 중 JSP와 서블릿을 중재하는 서블릿 컨테이너이지만 glassfish는 tomcat과 같은 오픈소스이며,

설치 환경 및 버전

OS Fedora12

Apache2.2 httpd-2.2.13-4.fc12.i686

glassfish V2.1.1

톰캣은 J2EE 중 JSP와 서블릿을 중재하는 서블릿 컨테이너이지만

glassfish는 tomcat과 같은 오픈소스이며, 웹 서비스 스택(메트로), EJBs, 자바 퍼시스턴스,

그리고 기타 많은 Java EE 5 스펙을 구현하는 Java EE 5-호환 어플리케이션 서버(was)입니다

현재 시스템은 APM+tomcat+Cubrid+mod_mono(asp.net) 구성된 상태이며

설치된 apache 에 tomcat대신 glassfish를 설치하여 연동하는 문서입니다

apache설치에 관한 내용은 문서가 많으니 검색해보시고 아니시면

yum 으로 설치하시기 바랍니다 => yum -y install httpd

모든작업은 root로 하겠습니다

다운을 먼저 받아보죠 아래사이트에서 받을수 있습니다

https://glassfish.dev.java.net/ko/public/downloadsindex.html#top

wget을 통해서 직접받을려면

# wget http://java.net/download/javaee5/v2.1.1_branch/promoted/Linux/glassfish-installer-v2.1.1-b31g-

linux-ml.jar

다받았으면 설치할 디렉토리로 위치시킵니다 설치시 conf파일에 위치가 잡히기에

애초에 설치할 디렉토리에 위치시키고 설치 하려고 합니다

전 /usr/local 에 위치시키고 설치하겠습니다

# java -Xmx256m -jar glassfish-installer-v2.1.1-b31g-linux-ml.jar

실행하면 Accept or Decline? [A,D,a,d] 동의할거냐 라고 물어보네요

A 혹은 a 로 accept 합니다 동의하면 압축이 쫙 풀리기 시작합니다

Page 3: Apache 와 Glassfish 연동 - Hoing...glassfish V2.1.1 톰캣은 J2EE 중 JSP와 서블릿을 중재하는 서블릿 컨테이너이지만 glassfish는 tomcat과 같은 오픈소스이며,

glassfish 디렉토리안에는 setup.xml 과 setup-cluster.xml 보이는데

클러스터로 설치할게 아니니 setup.xml 을 사용할것이고 ant를 이용하여 설치 할것입니다

glassfish 디렉토리안에 lib/ant/bin 에 ant가 위치에 있으니 사용하면 됩니다

먼저 실행 퍼미션을 부여한후 실행합니다

# cd lib/ant/bin

# chmod u+x ant

# ./ant -f ../../../setup.xml

설치전에 tomcat 8080 포트가 활성화가 되어있다면

톰켓 서비스를 내리던가 8080 포트를 disable 해두시기 바랍니다

설치가 완료 되었으면 패스를 잡아줍니다

저는 전역변수로 잡기위해 /etc/profile에서 패스를 잡겠습니다

PATH=/usr/local/glassfish/bin:$PATH; export PATH

glassfish 서비스를 시작합니다

# asadmin start-domain domain1

8080포트로 접속해보면 잘 접속 되네요

Page 4: Apache 와 Glassfish 연동 - Hoing...glassfish V2.1.1 톰캣은 J2EE 중 JSP와 서블릿을 중재하는 서블릿 컨테이너이지만 glassfish는 tomcat과 같은 오픈소스이며,

admin 페이지도 확인해보면

4848포트로 접속해보면 잘접속되는걸 확인할수 있습니다

외부에서 접속할때는 8080 이나 4848포트을 방화벽에서 열어줘야 합니다

기본 비밀번호는 setup.xml에서 기술되어있는 데로

ID : admin PW: adminadmin 입니다

로그인하게되면 깔끔하게 한글화된 관리메뉴를 볼수 있습니다

일단 메뉴에 "Application Server" 을 클릭하면 오른쪽 메뉴에서 "관리자 비밀번호"

메뉴를 클릭하게 되면 비밀번호 변경이 가능합니다

추가적인 사항은 천천히 살펴보시기 바랍니다

Page 5: Apache 와 Glassfish 연동 - Hoing...glassfish V2.1.1 톰캣은 J2EE 중 JSP와 서블릿을 중재하는 서블릿 컨테이너이지만 glassfish는 tomcat과 같은 오픈소스이며,

이제 apache와 연동하겠습니다 tomcat과 연동하듯이 mod_jk 를 이용하고

방법도 거의 비슷합니다 다만 tomcat의 tomcat-ajp.jar, commons-logging.jar , commons-modeler.jar

3개의 jar 파일이 필요 합니다

바이너리type 톰켓을 받아서 바로 풀고 jar파일만 가져오면 되겠습니다

# wget http://mirror.apache-kr.org/tomcat/tomcat-5/v5.5.28/bin/apache-tomcat-5.5.28.tar.gz

# tar zxvf apache-tomcat-5.5.28.tar.gz

위의 3개의 jar파일을 cp명령어로 glassfish 디렉토리안의 lib 디렉토리로 복사합니다

파일의 위치는 apache-tomcat-5.5.28/server/lib 에 있습니다

commons-logging 파일만 /apache-tomcat-5.5.28/bin 에 있습니다

# cp tomcat-ajp.jar /usr/local/glassfish/lib/

# cp commons-modeler-2.0.1.jar /usr/local/glassfish/lib/

# cp commons-logging-api-1.1.1.jar /usr/local/glassfish/lib

이제 연동부분을 세팅해보죠

apache의 conf 디렉토리에 worker.properties 파일을 만듭니다

worker.list=ajp13

worker.ajp13.port=8009

worker.ajp13.host=localhost

worker.ajp13.type=ajp13

worker.ajp13.lbfactor=1

worker.ajp13.socket_keepalive=1

바이너리 type mod_jk.so 를 다운받고 apache의 modules 디렉토리로 옴겨줍니다

# wget http://apache.tt.co.kr/tomcat/tomcat-connectors/jk/binaries/linux/jk-1.2.28/i586/mod_jk-1.2.28-

httpd-2.2.X.so

# mv mod_jk-1.2.28-httpd-2.2.X.so /etc/httpd/modules/mod_jk.so

(필자의 시스템에는 apache가 RPM으로 설치했습니다 apache설치유형에 따라 경로는 다를수있습니다)

apache 의 httpd.conf 파일을 열고 아래 내용을 기술합니다

LoadModule jk_module modules/mod_jk.so

JkWorkersFile conf/workers.properties

JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories

JkLogFile logs/mod_jk.log

JkMount /*.jsp ajp13

JkMount /*.do ajp13

JkMount /article/* ajp13

Page 6: Apache 와 Glassfish 연동 - Hoing...glassfish V2.1.1 톰캣은 J2EE 중 JSP와 서블릿을 중재하는 서블릿 컨테이너이지만 glassfish는 tomcat과 같은 오픈소스이며,

JkMount /uploadManager ajp13

JkMount /downManager ajp13

JkMount /alice-upload ajp13

JkMount /servlet/* ajp13

JkMount /testManager ajp13

JkMount /glassfish-test/* ajp13

JkMount 에 기본적인 jsp ,do , servlet외 Unicorn 보드설치시 세팅도 같이 들어있는것인데요

arcticle, uploadManager, downManager, alice-upload, testManager 는 Unicorn보드에

관련된 사항이라 기술하셔도 되고 적지않으셔도 됩니다

아래 명령어를 수행해야 glassfish 에서 ajp기능이 가능해 집니다

# asadmin create-jvm-options -Dcom.sun.enterprise.web.connector.enableJK=8009

명령 create-jvm-options이(가) 성공적으로 실행되었습니다.

여기서 의문이 드시는분이 있을 것 입니다 현재 저의 시스템에는 tomcat도 운영된다고 했는데

그럼 ajp13 프로토콜 포트인 8009 포트가 겹치는데 왜 glassfish 에서도 8009로 해줬는지

하시는분이 있을수도 있어 짧게 설명드리면 tomcat ajp13 포트를 변경했습니다 ㅡ_ㅡ;;

그에 해당하는 내용은 http://www.commit.co.kr/65 에서 다중 톰켓설정하는부분에서 ajp13 포트를

8009 외 다른번호로 변경해서 사용하는부분이 나옵니다 참고 하시길 바랍니다

일단 glassfish 서비스를 끕니다

# asadmin stop-domain domain1

glassfish domain1 의 docroot 을 apache의 htdoc위치와 맞춥니다

# mv docroot/ docroot.old

# ln -s /var/www/html /usr/local/glassfish/domains/domain1/docroot

저는 /var/www/html 이 apache의 htdoc 위치 입니다(apache설정에따라 위치는다를수있습니다)

그리고 테스트용 jsp파일을 위치 시킵니다 테스트용 파일이 위치시켰으면 glassfish 을 다시 켭니다

# asadmin start-domain domain1

그리고 apache를 재시작 합니다 http://localhost 나 http://ip 주소로

포트 붙이지 말고 접속해서 jsp 테스트 페이지가 보이신다면 정상적으로

apache 와 glassfish 가 연동되어서 JkMount 에 지정된 내용이 ajp13 프토로콜에 의해

apache 에서 glassfish 로 전달되어 잘 처리되었음을 알수 있습니다

글을 마치면서 원래는 Unicorn보드를 테스트삼아 띄워보려했지만 tomcat기반으로 개발된 보드이여서

에러를띄우면서 Unicorn 보드가 띄지않아 테스트 페이지의 스크린샷은 없음을 양해바랍니다