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

Post on 04-Mar-2021

1 views 0 download

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

Apache 와 Glassfish 연동

2010 년 4 월 17 일

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

admin@commit.co.kr

설치 환경 및 버전

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 합니다 동의하면 압축이 쫙 풀리기 시작합니다

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포트로 접속해보면 잘 접속 되네요

admin 페이지도 확인해보면

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

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

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

ID : admin PW: adminadmin 입니다

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

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

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

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

이제 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

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 보드가 띄지않아 테스트 페이지의 스크린샷은 없음을 양해바랍니다