iPlanet 과 WebLogic 을 사용해 웹 서비스 설정을 하는 방법에 대해 설명한다.
iPlanet 은 Sun Microsystems 과 Netscape Communications Corporation 에서 개발한 웹 서버의 브랜드명이다. 1996년에 개발되었는데, 닷컴기업의 성장에 따라 뛰어난 성능으로 인기를 얻은 웹 서버다. 현재는 Oracle 이 소유하고 있으며 2018년 3월에 최신 버전인 7.0.27 이 나와있다.
WebLogic 은 BEA Systems에서 개발한 Java Web Application Server 이다. 뛰어난 기능과 성능으로 인기있는 WAS이다. 현재는 Oracle 이 소유하고 있다. 2018년 8월 현재 최신 버전은 12.2.1.3 이다.
아래와 같은 서버 구성에서, Proxy 부터 WAS 까지 설치하고 설정하는 방법에 대해 설명한다. 실제로 현재도 이렇게 서비스하는 대기업도 꽤 되는 것으로 알고 있다. (이렇게 구성하면 소프트웨어 라이선스 비용이 장비값보다 더 나올 수 있다) 비용이 높은 만큼, 성능과 관리면에서는 매우 좋다.
사용자 ↔ 인터넷 ↔ Oralce iPlanet Proxy서버 (리버스 프록시) ↔ 오라클 iPlanet 웹서버 ↔ 오라클 WebLogic ↔ Oracle GlassFish Server Message Queue(http://mq.java.net/)1) ↔ Oracle RDBMS
1) Sun Java System Message Queue 4.3 → Sun GlassFish Message Queue 4.4 → Oracle GlassFish Server Message Queue 4.5 으로 이름이 변경되었다.
이 구성을 그대로 오픈 소스로 하는 방법이 있다. 예를 들면 아래와 같이 하면 된다.
사용자 ↔ 인터넷 ↔ nginx (리버스 프록시) ↔ Apache Httpd ↔ Apache Tomcat ↔ Apache ActiveMQ ↔ PostgreSQL
2011년 초에 작성한 이후로 공개하지 않다가, 늦게나마 공개하게 된 문서다. 지금은 당시와는 환경이 많이 바뀌었기 때문에 문서의 내용이 맞지 않을 수도 있음에 주의하자. (이 문서는 최신 버전으로 문서 갱신을 하지 않는다) 문서 내용에 대한 코멘트는 하단의 코멘트 섹션이나 방명록에 글을 남겨주기 바란다.
root@wl ~ # cd /usr/local
root@wl /usr/local # sh ~/jdk-6u30-solaris-i586.sh
root@wl /usr/local # sh ~/jdk-6u30-solaris-x64.sh
root@wl /usr/local # ln -s jdk1.6.0_30 java
Oracle iPlanet Web Server
Oracle iPlanet Web Server는 썬(오라클에 합병)에서 만든 웹 서버다. Netscape Enterprise Server, Sun iPlanet WebServer, Sun ONE WebServer, Sun Java System Web Server으로 불렸던 서버 소프트웨어다.
설치할 디렉토리를 변경한 후 다음를 클릭한다. 디렉토리를 생성할 것인가 물으면 예를 클릭한다.
사용자정의설치를 선택한 후 다음를 클릭한다.
다음을 클릭한다.
다음을 클릭한다.
지금설치를 클릭한다.
마침을 클릭한다.
어드민 서버 시작
어드민 서버를 아래와 같이 시작할 수 있다.
root@wl ~ # /opt/oracle/proxyserver4/proxy-admserv/start
Oracle iPlanet Proxy Server 4.0.14 B06/08/2010 06:16
info: CORE3016: daemon is running as super-user
info: CORE5076: Using [Java HotSpot(TM) Server VM, Version 1.5.0_12] from [Sun Microsystems Inc.]
info: WEB0100: Loading web module in virtual server [vs1] at [/admin-app]
info: HTTP3072: [LS ls1] http://wl:8081 ready to accept requests
startup: server started successfully
root@wl ~ #
프록시란, 인터넷을 통해 웹서버로 보낼 클라이언트의 요청을 가로채 요청을 웹서버에 전달하고, 리턴된 데이터를 캐시한 후, 다시 사용자에게 전송해준다. 동일한 요청이 다시오면 캐시된 데이터를 사용자에게 전송해준다.
server1을 클릭한다.
On을 클릭한다.
서비스가 시작되었다.
웹 브라우저에서 프록시를 설정하면 프록시 서버를 사용할 수 있다. 설정 방법은 웹 브라우저마다 다르다. 예시된 화면은 FireFox에서 설정하는 화면이다.
리버스 프록시(Reverse Proxy) 설정
리버스 프록시란 인터넷을 통해 받은 클라이언트의 요청을 가로채 요청을 웹서버로 전달하고, 리턴된 데이터를 캐시한 후, 다시 사용자에게 전송해준다. 동일한 요청이 다시오면 캐시된 데이터를 사용자에게 전송해준다. 리버스 캐싱 프록시(Caching Proxy)라고도 한다.
프록시와 리버스 프록시의 차이는 서버를 어디에 두었느냐의 차이다. (사실상 같은 기능이다) 인터넷을 통하기 전이라면 프록시고, 인터넷을 통한 후라면 리버스 프록시가 된다.
리버스 프록시는 Oracle iPlanet Web Server 에서도 설정 가능하다. 하지만 보통 리버스 프록시 서버와 웹서버는 다른 장비에 설치하기 때문에, 속도도 빠르고 가격도 저렴한 전용 프록시 서버 소프트웨어를 사용한다.
Servers에서 Add Server를 클릭하고, ServerPort에 80, Server User를 websvrd로 설정한 후 OK를 클릭한다.
생성에 성공하면 Configure ... 을 클릭한다.
Routing 탭을 선택한 후, http://.*을 선택한 다음 Select버튼을 클릭한다. 선택되면 Enable Proxying Of This Resource를 선택한 후, OK를 클릭한다.
가장 하단의 Configure HTTP Request Load Balancing을 선택한후, http://.* 을 선택하고 Select 버튼을 클릭한다. 선택되면 Server 에 iPlanet 서버를 입력해준다. 필자의 경우 http://192.168.0.100:81이다. OK를 클릭해 저장한다.
Preferences 에서 Start / Stop Server탭을 선택한후, On을 클릭해 프록시 서버를 시작한다.
이후에 80포트로 접속하면 프록시 서버에서 웹서버에서 컨텐츠를 가져와 클라이언트에 보낸다. HTTP 응답헤더는 아래처럼 Proxy-agent, Via 가 추가되어 보일 것이다.
Oracle WebLogic Server 12c (12.1.1)
BEA에서 만들던 웹 어플리케이션 서버 및 미들웨어다. 현재는 Oracle에 인수되었다. 오라클에서도 주력으로 밀고 있는 미들웨어다.
설치
root@wl ~ # $JAVA_HOME/bin/java -jar wls1211_generic.jar
Java Accessibility Bridge for GNOME loaded.
Extracting 0%....................................................................................................100%
2011. 12. 13 오전 7:39:02 java.util.prefs.FileSystemPreferences$2 run
정보: Created user preferences directory.
잠시 기다리면 인스톨러가 실행된다.
다음을 클릭한다.
홈 디렉토리를 수정하고 다음을 클릭한다.
다음을 클릭한다. 등록하려면 아이디가 있어야 한다.
사용자정의설치를 선택하고 다음을 클릭한다.
다음을 클릭한다.
필요한 경우 JVM의 위치를 바꿀 수 있다. 다음을 클릭한다.
다음을 클릭한다.
다음을 클릭한다.
설치중이다. 잠시 기다린다.
완료을 클릭한다.
Quick Start 가 실행되는데 한번 보길 권한다.
설정
웹 로직 도메인 생성
설정 마법사 /Oracle/Middleware/wlserver_12.1/common/bin/config.sh를 실행시키면 아래와 같은 화면이 나온다.
잠시 기다리면 인스톨러가 실행된다.
다음을 클릭한다.
다음을 클릭한다.
다음을 클릭한다.
도메인 관리 페이지에 로그인할 때 사용할 사용자 이름과 비밀번호를 입력하고 다음을 클릭한다. 오라클 패스워드 규격에 맞도록 입력해야 한다.
[base_domain → 환경 → 시스템]에서 시스템을 생성
[이름]: Machine-WL
[시스템OS]: Unix
[base_domain → 환경 → 클러스터]에서 클러스터를 생성
[이름]: Cluster-SOLANARA
[메시징 모드]: 멀티캐스트 1)
[멀티캐스트 주소]: 239.192.0.0
[멀티캐스트 포트]: 7001
→ 생성된 클러스터에 들어가서
[일반]
[클러스터 주소]: localhost:8001,localhost:8002
고급의 [WebLogic 플러그인 사용]: 체크
[복제]
[클러스터 간 복제 유형]: MAN(동기) HTTP 세션 상태 복제
[원격 클러스터 주소]: 비워둠
[base_domain → 환경 → 서버]에서 서버를 생성.
[서버이름]: Server-WL_8001
[서버수신포트]: 8001
[예, 이 서버를 기존 클러스터의 멤버로 생성합니다.]: Cluster-SOLANARA
→ 생성된 서버에 들어가서
[일반]
[시스템]: Machine-WL
[클러스터]
[복제그룹]: REPGROUP
[기본보조그룹]: REPGROUPSUB
[배치]
[준비모드]: nostage
[서버시작]
[인수]: -server -Xms32m -Xmx256m -XX:MaxPermSize=128m 2)
[base_domain → 환경 → 서버]에서 두번째 서버를 생성.
[서버이름]: Server-WL_8002
[서버수신포트]: 8002
[예, 이 서버를 기존 클러스터의 멤버로 생성합니다.]: Cluster-SOLANARA
→ 생성된 서버에 들어가서
[일반]
[시스템]: Machine-WL
[클러스터]
[복제그룹]: REPGROUP
[기본보조그룹]: REPGROUPSUB
[배치]
[준비모드]: nostage
[서버시작]
[인수]: -server -Xms32m -Xmx256m -XX:MaxPermSize=128m 2)
[base_domain → 환경 → 서버]에서 테스트를 위한 프록시 서버를 생성. 3)
[서버이름]: Server-WL_Proxy
[서버수신포트]: 7002
→ 생성된 서버에 들어가서
[일반]
[시스템]: Machine-WL
1) 메시징 모드로 유니캐스트를 선택하면 채널 이름을 정하고 base_domain → 환경 → 서버 → 프로토콜 → 채널을 선택해야 한다. 2) 사용하는 메모리 양을 줄이기 위함이다. 실무에서는 비워둔다. 3) 프록시 서버라고는 하지만 웹 프록시와는 관계 없다. 클러스터를 테스트하기 위한 서버이므로, 실 서비스시 생성하지 않아도 된다.
웹 서비스 디렉토리 생성
WAR 파일은 base_domain → 배치에서 WAR를 선택해 배포할 수 있다. 여기서는 스테이지모드가 아닌 경우에 해당되는 방법이다. 이 예에서는 /export/home/webmast/jsproot를 루트로 정했다.
[base_domain → 배치 → 설치]에서 새 배치 생성
/export/home/webmast/jsproot 를 선택
이 배치를 응용 프로그램으로 설치
[Cluster-SOLANARA], [클러스터의 모든 서버] 선택
[이름]에 jsproot, [고급], [다음 위치에서 배치를 액세스할 수 있음]을 선택. 완료 클릭
[base_domain → 배치 → 설치]에서 새 배치 생성
/export/home/webmast/proxyroot 를 선택
이 배치를 응용 프로그램으로 설치
[Server-WLDEV_Proxy] 선택
[이름]에 proxyroot, [고급], [다음 위치에서 배치를 액세스할 수 있음]을 선택. 완료 클릭
[base_domain → 환경 → 서버]에서 [콘트롤] 탭으로 이동
[Server-WL_8001], [Server-WL_8002], [Server-WL_Proxy] 선택 후 [시작]을 클릭
노드매니저는 웹로직 어드민 웹 인터페이스에서 서버를 시작/중지 하기 위해 실행해 놓는 데몬으로, 커맨드에서 시작/중지할 때는 실행할 필요 없다.
root@wl ~ # /Oracle/Middleware/user_projects/domains/base_domain/startWebLogic.sh &
...
... <Server started in RUNNING mode>
root@wl ~ # cd /Oracle/Middleware/user_projects/domains/base_domain/bin
root@wl /Oracle/Middleware/user_projects/domains/base_domain/bin # cp startManagedWebLogic.sh start.sh 1)
root@wl /Oracle/Middleware/user_projects/domains/base_domain/bin # vi start.sh
WLS_USER=weblogic
WLS_PW=weblogicadminpassword
root@wl /Oracle/Middleware/user_projects/domains/base_domain/bin # ./start.sh Server-WLDEV_8001 & 2)3)
... <Server started in RUNNING mode>
root@wl /Oracle/Middleware/user_projects/domains/base_domain/bin # ./start.sh Server-WLDEV_8002 &
... <Server started in RUNNING mode>
root@wl /Oracle/Middleware/user_projects/domains/base_domain/bin #
1)startManagedWebLogic.sh를 복사해 스크립트를 고친다. 수정하지 않으면 웹로직 어드민의 아이디와 패스워드를 입력해야 한다. startManagedWebLogic.sh 파일은 웹로직의 구성을 변경하면 초기화되는 경우가 있기 때문에, 복사해 사용한다. 2)nohup(1)을 사용해 웹로직을 실행하거나, start.sh의 끝부분에 startWebLogic.sh를 실행시키는 명령을 적당히 수정하면, 명령행에서 &을 붙이지 않고 실행할 수 있다. 3) 두번째 인자로 웹 로직의 어드민 주소(http://localhost:7001)을 입력하도록 되어있다.
종료
WebLogic Server
노드 매니저는 종료스크립트가 없다. kill(1)을 사용하거나, Ctrl+C를 눌러 종료한다.
root@wl ~ # /Oracle/Middleware/user_projects/domains/base_domain/bin/stopManagedWebLogic.sh Server-WLDEV_8001
...
Please enter your username [weblogic] :weblogic
Please enter your password [welcome1] :
...
Done
root@wl ~ # /Oracle/Middleware/user_projects/domains/base_domain/bin/stopManagedWebLogic.sh Server-WLDEV_8002
...
Please enter your username [weblogic] :weblogic
Please enter your password [welcome1] :
...
Done
root@wl ~ # /Oracle/Middleware/user_projects/domains/base_domain/bin/stopWebLogic.sh
...
Disconnected from weblogic server: AdminServer
Disconnected from weblogic server:
Exiting WebLogic Scripting Tool.
Done
root@wl ~ #
Sun Java System Web Server
root@wl ~ # /sun/webserver7/https-wldev/bin/stopserv
server has been shutdown
root@wl ~ # /sun/webserver7/admin-server/bin/stopserv
server has been shutdown
root@wl ~ #
Oracle iPlanet Web Web Server와 WAS 연동
자바 사용 안함 설정
웹로직 또는 톰캣과 연동 하기 전에, Oracle iPlanet Web Web Server 에서 Java를 사용하지 않도록 세팅해야 한다.
자바 탭에서, 자바의 사용 가능 체크박스를 풀고, 저장을 클릭 한 후, 보류중인 배포를 클릭해 배포하고 서버를 재시작할것인지 물으면 서버를 재시작하자.
WebLogic Server 연동
아파치와 톰캣의 경우 정적 파일은 아파치가, JSP는 톰캣이 처리하는 방법으로 구성을 많이 했었다. 마찬가지로 정적 컨텐츠는 Sun Java System Web Server가, JSP는 WebLogic Server가 맡아 처리하도록 세팅할 것이다.
설정
root@wldev ~ # vi /sun/webserver7/https-wldev/config/magnus.conf
...
Init fn="load-modules" funcs="wl_proxy,wl_init" shlib="/Oracle/Middleware/wlserver_10.3/server/plugin/solaris/x86/libproxy_61.so"
Init fn="wl_init"
root@wldev ~ # vi /sun/webserver7/https-wldev/config/obj.conf
...
NameTrans 와 PathCheck 사이에 아래의 내용 넣음
Service method="(GET|HEAD|POST|PUT)" type="text/html" fn="wl_proxy" WebLogicCluster="localhost:8001,localhost:8002" 1)
...
root@wldev ~ # vi /sun/webserver7/https-wldev/config/mime.types
...
type=text/html exts=jsp
...
root@wldev ~ # /sun/webserver7/https-wldev/bin/restart
1) 만약 클러스터된 구성이 아니라면 WebLogicCluster="~" 대신 WebLogicHost="localhost" WebLogicPort="8001"와 같이 사용해야 한다.
root@wldev ~ # vi /sun/webserver7/https-wldev/config/magnus.conf
...
Init fn="load-modules" funcs="jk_init,jk_service" shlib="/usr/local/lib/nsapi_redirector.so"
Init fn="jk_init" worker_file="/usr/local/tomcat/conf/workers.properties" log_level="debug" log_file="/usr/local/tomcat/logs/nsapi.log" shm_file="/tmp/jk_shm_file"
...
root@wldev ~ # vi /usr/local/tomcat/conf/workers.properties
worker.list=worker1
worker.worker1.host=localhost
worker.worker1.port=8009
worker.worker1.type=ajp13
worker.worker1.connection_pool_size=100 1)
...
root@wldev ~ # vi /sun/webserver7/https-wldev/config/obj.conf
...
NameTrans 와 PathCheck 사이에 아래의 내용 넣음
NameTrans fn="assign-name" from="/*.jsp" name="servlet"
NameTrans fn="assign-name" from="/servlet/*" name="servlet"
PathCheck fn="deny-existence" path="*/WEB-INF/*"
<Object name="servlet">
ObjectType fn="force-type" type="text/html"
Service fn="jk_service" worker="worker1"
Service fn="jk_service" worker="worker2" path="/servlet/*"
</Object>
...
root@wldev ~ # vi /sun/webserver7/https-wldev/config/mime.types
...
type=text/html exts=jsp
...
root@wldev ~ # /sun/webserver7/https-wldev/bin/restart
1)[warn] ajp_get_endpoint::jk_ajp_common.c (LINENUM): Unable to get the free endpoint for worker WORKERNAME from SLOTNUM slots메시지가 나는 경우 이 라인을 추가한다.
사용자 노트
사용자 노트는 사용자의 제안이나 문서의 정확도 향상을 위해 개발되었습니다. 본문과 관련된 대한 질문/의견등을 노트에 남겨주시면 이 페이지에 방문하는 다른 사용자에게 도움이 될 것입니다. 사용자 노트는 서술한 내용이 반영되거나, 코멘트 내용이 본문과 관련 없는 경우 '삭제'됩니다.