weblogic.Deployer 를 이용한 배포.
WebLogic 은 weblogic.Deployer 라는 Command Line 명령어를 이용해서 배포를 할 수 있습니다. 이를 통해서 GUI 화면인 WebLogic Admin Console 없이도 터미널을 이용해서 쉽고 빠르게 배포를 할 수 있는 것입니다.
setWLSEnv.sh 실행
터미널의 Command Line 에서 weblogic.Deployer 를 사용하기 위해서는 반드시 환경실행 파일을 먼저 실행해야 합니다. setWLSEnv.sh 라 불리우는 이 파일은 weblogic.Deployer 를 실행하기 위한 각종 라이브러리 클래스와 명령어 PATH를 세팅해 줍니다.
1 2 3 4 5 6 7 |
weblogic@wlserv1:~$ source $WLS_HOME/server/bin/setWLSEnv.sh CLASSPATH=/u01/app/weblogic/middleware/patch_wls1036/profiles/default/sys_manifest_classpath/weblogic_patch.jar:/u01/app/weblogic/middleware/patch_ocp371/profiles/default/sys_manifest_classpath/weblogic_patch.jar:/opt/jdk1.7.0_80/lib/tools.jar:/u01/app/weblogic/middleware/wlserver_10.3/server/lib/weblogic_sp.jar:/u01/app/weblogic/middleware/wlserver_10.3/server/lib/weblogic.jar:/u01/app/weblogic/middleware/modules/features/weblogic.server.modules_10.3.6.0.jar:/u01/app/weblogic/middleware/wlserver_10.3/server/lib/webservices.jar:/u01/app/weblogic/middleware/modules/org.apache.ant_1.7.1/lib/ant-all.jar:/u01/app/weblogic/middleware/modules/net.sf.antcontrib_1.1.0.0_1-0b2/lib/ant-contrib.jar:.:/opt/java/jre/lib PATH=/u01/app/weblogic/middleware/wlserver_10.3/server/bin:/u01/app/weblogic/middleware/modules/org.apache.ant_1.7.1/bin:/opt/jdk1.7.0_80/jre/bin:/opt/jdk1.7.0_80/bin:/home/weblogic/bin:/home/weblogic/.local/bin:/opt/java/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/snap/bin Your environment has been set. weblogic@wlserv1:~$ |
반드시 weblogic.Deployer 를 실행하기 전에 실행해줘야 합니다.
weblogic.Deployer 사용법
이를 사용하기 위해서는 반드시 Admin 서버를 주소와 포트를 알아야 합니다. WebLogic 의 모든 제어는 Admin 을 통해서만 가능하기 때문이며 weblogic.Deployer 실행하는 서버와 Admin 서버간의 통신도 가능해야 합니다.
배포된 애플리케이션 리스트
먼저 배포된 애플리케이션 리스트를 가져와 보겠습니다.
1 2 3 4 |
weblogic@wlserv1:~$ java weblogic.Deployer -adminurl t3://192.168.96.30:7001 -user weblogic -password 패스워드 -listapps weblogic.Deployer invoked with options: -adminurl t3://192.168.96.30:7001 -user weblogic -listapps healthCheck Number of Applications Found : 1 |
Admin 서버 주소와 포트를 -adminurl 인자로 주고 Admin Web Console 로그인 정보로 인증을 해줍니다. 마지막으로 배포된 애플리케이션 리스트를 출력하도록 -listapps 를 인자로 줍니다.
배포하기
배포를 하기 위해서는 먼저 Admin 서버에 업로드 디렉토리에 배포할 애플리케이션 파일이 존재해야 합니다. (뒤에 업로드도 하면서 배포하는 방법이 있습니다.)
그리고 다음과 같이 해줍니다.
1 2 3 4 5 6 |
weblogic@wlserv1:~$ java weblogic.Deployer -adminurl t3://192.168.96.30:7001 -user weblogic -password 패스워드 -deploy -name healthCheck -source /u01/app/weblogic/config/domains/ChinaFustat/servers/AdminServer/upload/healthCheck.war weblogic.Deployer invoked with options: -adminurl t3://192.168.96.30:7001 -user weblogic -deploy -name healthCheck -source /u01/app/weblogic/config/domains/ChinaFustat/servers/AdminServer/upload/healthCheck.war <May 12, 2017 12:42:22 AM KST> <Info> <J2EE Deployment SPI> <BEA-260121> <Initiating deploy operation for application, healthCheck [archive: /u01/app/weblogic/config/domains/ChinaFustat/servers/AdminServer/upload/healthCheck.war], to configured targets.> Task 15 initiated: [Deployer:149026]deploy application healthCheck on Server AdminServer. Task 15 completed: [Deployer:149026]deploy application healthCheck on Server AdminServer. Target state: deploy completed on Server AdminServer |
배포가 완료 되었다. 하지만 여기에는 한가지 문제가 있습니다.
애플리케이션은 유지보수가 됩니다. 그래서 많은 변화가 일어나고 변화된 내용을 WebLogic 서버에 배포해야 합니다. 그런데, 배포할 파일 이름이 healthCheck.war 로 모두 동일하다면 WebLogic 서버에 배포하기 위해서는 기존의 배포된 파일을 제거하고 새로운 파일을 배포해야 합니다. 이는 사람이 수동을 다 해줘야 합니다.
버전 배포하기
만일, 배포시에 애플리케이션을 구분하기 위해서 버전정보를 준다면 WebLogic 서버는 자동으로 기존의 배포된 애플리케이션은 회수되고 새로운 버전의 애플리케이션이 활성화해주어 서비스를 지속할 수 있도록 해줍니다.
1 2 3 4 5 6 |
weblogic@wlserv1:~$ java weblogic.Deployer -adminurl t3://192.168.96.30:7001 -user weblogic -password 패스워드 -deploy -name healthCheck -source /u01/app/weblogic/config/domains/ChinaFustat/servers/AdminServer/upload/1.0.1/healthCheck.war -appversion 1.0.1 weblogic.Deployer invoked with options: -adminurl t3://192.168.96.30:7001 -user weblogic -deploy -name healthCheck -source /u01/app/weblogic/config/domains/ChinaFustat/servers/AdminServer/upload/1.0.1/healthCheck.war -appversion 1.0.1 <May 12, 2017 12:23:38 AM KST> <Info> <J2EE Deployment SPI> <BEA-260121> <Initiating deploy operation for application, healthCheck [archive: /u01/app/weblogic/config/domains/ChinaFustat/servers/AdminServer/upload/1.0.1/healthCheck.war], to configured targets.> Task 6 initiated: [Deployer:149026]deploy application healthCheck [Version=1.0.1] on AdminServer. Task 6 completed: [Deployer:149026]deploy application healthCheck [Version=1.0.1] on AdminServer. Target state: deploy completed on Server AdminServer |
-appversion 1.0.1 은 배포되는 애플리케이션 버전이 1.0.1 임을 지정해 줍니다.
재배포 하기
재배포는 기존의 버전보다 업데이트된 버전으로 교체하는 것을 말합니다. 지금까지 배포할때 사용했던 -deploy 대신에 -redeploy 를 사용하고 버전은 기존의 것보다 높은 버전을 지정해주면 됩니다.
1 2 3 4 5 6 |
weblogic@wlserv1:~$ java weblogic.Deployer -adminurl t3://192.168.96.30:7001 -user weblogic -password 패스워드 -redeploy -name healthCheck -source /u01/app/weblogic/config/domains/ChinaFustat/servers/AdminServer/upload/1.0.1/healthCheck.war -appversion 1.0.2 weblogic.Deployer invoked with options: -adminurl t3://192.168.96.30:7001 -user weblogic -redeploy -name healthCheck -source /u01/app/weblogic/config/domains/ChinaFustat/servers/AdminServer/upload/1.0.1/healthCheck.war -appversion 1.0.2 <May 12, 2017 12:25:40 AM KST> <Info> <J2EE Deployment SPI> <BEA-260121> <Initiating redeploy operation for application, healthCheck [archive: /u01/app/weblogic/config/domains/ChinaFustat/servers/AdminServer/upload/1.0.1/healthCheck.war], to configured targets.> Task 7 initiated: [Deployer:149026]deploy application healthCheck [Version=1.0.2] on AdminServer. Task 7 completed: [Deployer:149026]deploy application healthCheck [Version=1.0.2] on AdminServer. Target state: redeploy completed on Server AdminServer |
기존의 1.0.1 버전보다 높아진 1.0.2 를 사용했고 재배포하기 위해서 -redeploy 를 사용했습니다.
지금까지 배포 방법에는 한가지 문제가 있습니다. 전부다 Admin 서버를 대상으로 배포를 진행했다는 것입니다. weblogic.Deployer 는 배포할 서버를 지정해줄 수가 있습니다. 서버뿐만 아니라 Cluster 를 지정함으로써 Cluster 내에 포함된 모든 서버에 배포를 적용할 수도 있습니다.
타켓(Target) 지정 배포하기
배포 대상 서버, Cluster 을 타켓이라고 합니다. -targets 옵션을 주어서 지정할 수 있습니다.
1 2 3 4 5 6 |
weblogic@wlserv1:~$ java weblogic.Deployer -adminurl t3://192.168.96.30:7001 -user weblogic -password 패스워드 -deploy -name healthCheck -source /u01/app/weblogic/config/domains/ChinaFustat/servers/AdminServer/upload/healthCheck.war -appversion 1.0.1 -targets Server-0 weblogic.Deployer invoked with options: -adminurl t3://192.168.96.30:7001 -user weblogic -deploy -name healthCheck -source /u01/app/weblogic/config/domains/ChinaFustat/servers/AdminServer/upload/healthCheck.war -appversion 1.0.1 -targets Server-0 <May 12, 2017 12:36:26 AM KST> <Info> <J2EE Deployment SPI> <BEA-260121> <Initiating deploy operation for application, healthCheck [archive: /u01/app/weblogic/config/domains/ChinaFustat/servers/AdminServer/upload/healthCheck.war], to Server-0 .> Task 13 initiated: [Deployer:149026]deploy application healthCheck [Version=1.0.1] on Server-0. Task 13 completed: [Deployer:149026]deploy application healthCheck [Version=1.0.1] on Server-0. Target state: deploy completed on Server Server-0 |
타켓을 지정하면 결과 출력에도 타켓 서버가 함께 출력됩니다.
파일 업로드 배포하기
만일 원격에서 파일을 배포하려고 하는데, 배포 파일을 서버로 옮길 방법이 없을 경우에 파일 업로드와 함께 배포를 실행할 수 있습니다. 이를 사용하기 위해서는 먼저 업로드 디렉토리가 설정되어 있어야 합니다.
1 |
java weblogic.Deployer -adminurl t3://192.168.96.30:7001 -user weblogic -password 패스워드 -deploy -name healthCheck -remote -upload /home/weblogic/healthCheck.war -targets Server-0 -appversion 1.0.1 |
-upload 옵션과함께 -remote 옵션을 함께 사용합니다.
UnDeploy 하기
배포를 삭제하기 위해서는 undeploy 를 하면 됩니다. undeploy 할때에는 -source 옵션은 필요 없고 -version 과 -target 그리고 애플리케이션 이름 옵션인 -name 만 있으면 됩니다.
1 |
weblogic@wlserv1:~$ java weblogic.Deployer -adminurl t3://192.168.96.30:7001 -user weblogic -password 패스워드 -undeploy -name healthCheck -appversion 1.0.1 |