[JBoss] Application Deployment
1. Overview
Application Deployment 명령어를 학습한다.
- 압축된 Unexploded WAR 파일의 배포 및 관리
- 압축해제된 Exploded WAR 파일의 배포 및 관리
2. Deploy CLI
기본적으로 배포 시에는 다음의 Syntax를 유념해야한다.
jboss-cli > deploy --help
명령을 통해 확인하면 되겟으며, 여기서는 필요한 요소만 확인한다.
deploy \
--name=baseApp \
--runtime-name=baseApp.war \
--url=file://.../baseApp.war \
--unmanaged \
--force
- –name : 어플리케이션 배포 단위마다 유니크한 이름
- –runtime-name : 지정하지 않아도 되는 옵션이며, <name> 자동 지정된다. 그러나 확장자를 .war로 지정해야 Context-Root 호출이 가능하기 때문에 사실상 필수 옵션이다.
- –url : 어플리케이션 위치
- –unmanaged : 어플리케이션을
-Djboss.server.deploy.dir
에 복사하지 않는다. - –force : 이미 배포된 어플리케이션을 덮어 씌운다.
위의 Syntax에서 크게 벗어나지 않는 것만 알아도 대부분의 어플리케이션 배포에는 문제가 없다. 아래에서 여러가지 파라메터로 실행하고 확인한다.
3. Unexploded WAR 배포
Application 배포 디렉토리를 -Djboss.server.deploy.dir=<PATH>/appDeployHome
으로 지정하였다.
지정하지 않으면, 기본적으로 인스턴스 아래, 즉 다음과 같은 경로가 된다. /usr/ssw/jboss/servers/base_domain/baseSvr1_1/data/content
아래 명령으로, baseApp.war 파일을 배포한다.
deploy \
--name=baseApp \
--runtime-name=baseApp.war \
<PATH>
--unmanaged
옵션이 없으므로, 아래 위치에 복제된다.
1
Content added at location /usr/ssw/jboss/servers/base_domain/baseSvr1_1/appDeployHome/28/c76586c599e9cf1c2f2e2f87269fcf377d351b/content
baseApp.war 배포 정보 및 등록된 Context-Root 도 친절히 알려준다.
1
2
3
WFLYSRV0027: Starting deployment of "baseApp.war" (runtime-name: "baseApp.war")
WFLYUT0021: Registered web context: '/baseApp' for server 'default-server'
WFLYSRV0010: Deployed "baseApp.war" (runtime-name : "baseApp.war")
standalone*xml 파일 확인
1
2
3
4
5
<deployments>
<deployment name="baseApp.war" runtime-name="baseApp.war">
<content sha1="28c76586c599e9cf1c2f2e2f87269fcf377d351b"/>
</deployment>
</deployments>
배포 상태 확인
1
2
3
jboss-cli > deployment info
NAME RUNTIME-NAME PERSISTENT ENABLED STATUS
baseApp.war baseApp.war true true OK
http://IP:PORT/baseApp/indexjsp 로 서비스 호출 할 수 있다.
4. Exploded WAR 배포
아래 명령으로, baseApp.war 파일을 배포한다.
deploy \
--name=baseApp \
--runtime-name=baseApp.war \
--unmanaged \
/usr/ssw/jboss/servers/base_domain/baseSvr1_1/baseApp
압축 해제된 디렉터리 배포의 경우에는 --unmanaged
옵션을 적용해야 한다. (jboss-cli> deploy --help
)
해당 옵션은 디렉터리 배포의 경우에도 사용되지만, WAR 배포에도 사용된다.
주요 목적은, 옵션 적용 시 컨텐츠가 특정 디렉토리(appDeployHome)에 배포되어 유지되지만,
실제 배포는 해당 디렉터리에서 직접 된다.
또한, baseApp 어플리케이션 수정 시 핫디플로이 된다.
1
Content added at location /usr/ssw/jboss/servers/base_domain/baseSvr1_1/appDeployHome/28/c76586c599e9cf1c2f2e2f87269fcf377d351b/content
standalone*xml 파일 확인
1
2
3
4
5
<deployments>
<deployment name="baseApp" runtime-name="baseApp.war">
<fs-exploded path="/usr/ssw/jboss/servers/base_domain/baseSvr1_1/baseApp"/>
</deployment>
</deployments>
5. 기존 배포 업데이트
어플리케이션 변경에 대응 하기 위해,
동일한 어플리케이션 업데이트를 할 수 있다.
1
2
3
4
5
6
deploy \
--name=baseApp \
--runtime-name=baseApp.war \
--unmanaged \
--force \
/usr/ssw/jboss/servers/base_domain/baseSvr1_1/baseApp
baseApp 의 모든 컨텐츠를 --force
옵션으로 인해 재배포한다.
배포 중단
1
2
WFLYUT0022: Unregistered web context: '/baseApp' from server 'default-server'
WFLYSRV0028: Stopped deployment baseApp (runtime-name: baseApp.war) in 11ms
새로운 배포의 시작 (중단한 배포 삭제)
1
2
3
4
5
WFLYSRV0027: Starting deployment of "baseApp" (runtime-name: "baseApp.war")
WFLYUT0021: Registered web context: '/baseApp' for server 'default-server'
WFLYSRV0016: Replaced deployment "baseApp.war" with deployment "baseApp.war"
WFLYDR0009: Content /usr/ssw/jboss/servers/base_domain/baseSvr1_1/appDeployHome/c0/4764af6fe95a9863599ad6ecbcae79106d3938 is obsolete and will be removed
WFLYDR0002: Content removed from location /usr/ssw/jboss/servers/base_domain/baseSvr1_1/appDeployHome/c0/4764af6fe95a9863599ad6ecbcae79106d3938/content
6. 어플리케이션 버저닝
동일한 어플리케이션 여럿 등록하여 버저닝을 할 수도 있다.
--unmanaged
를 제거해야, 컨텐츠를 복제하여 별도로 관리하기 때문에 버저닝이 된다.
1
2
3
4
deploy \
--name=baseApp \
--runtime-name=baseApp.war \
/usr/ssw/jboss/servers/base_domain/baseSvr1_1/baseApp.war
baseApp.war 를 수정하여 version#2 를 릴리즈 할 경우.
1
2
3
4
deploy \
--name=baseApp_v2 \
--runtime-name=baseApp_v2.war \
/usr/ssw/jboss/servers/base_domain/baseSvr1_1/baseApp.war
baseApp.war 는 각 명령어 배포 시점에 고유한 디렉토리에 복제되어 배포되기 때문에
변경된 동일 어플리케이션을 버저닝 관리하듯이 배포할 수 있다.
각각 접속 URL은
http://IP:PORT/baseApp/index.jsp
http://IP:PORT/baseApp_v2/index.jsp 가 된다.
7. 어플리케이션 배포 삭제
1
2
3
4
jboss-cli> deployment info
NAME RUNTIME-NAME PERSISTENT ENABLED STATUS
baseApp baseApp.war true true OK
baseApp_v2 baseApp_v2.war true true OK
1
deployment undeploy baseApp
또는
1
undeploy *
8. 참고 문헌
https://access.redhat.com/documentation/en-us/red_hat_jboss_enterprise_application_platform/6.4/html/administration_and_configuration_guide/define_a_custom_directory_for_deployed_content
https://access.redhat.com/solutions/2978491
https://access.redhat.com/solutions/2181751