▼ Backend/스프링 (Spring)

Spring Boot | bootWar, war 내,외장 톰캣으로 실행하기

Valar 2023. 2. 27. 17:36
반응형

개요

스프링 부트 war 패키징 프로젝트를 bootwar, war로 빌드하여 내장·외장 톰캣으로 실행해본다.

내장·외장 톰캣의 성능

내장·외장 성능에 대해서 유의미한 큰 차이는 없다고 한다. 하지만 외장 톰캣에서 virtual host 같은 기능의 구성 시 간단하게 적용 가능하다.

virtual host

도메인 host에 따라 각각의 다른 루트 컨텍스트를 갖게하여 하나의 웹 애플리케이션 배포만으로 마치 여러 애플리케이션을 운영하는것처럼 하는 기능

bootWar

내장·외장 톰캣 실행 가능

war

외장 톰캣으로만 실행 가능

패키지 구성의 차이

bootWar의 경우, 내장 톰캣으로 실행이 가능 하게 해주는 WEB-INF > lib-provided 구성이 존재한다.

bootWar war
WEB-INF WEB-INF
META-INF META-INF
org  

 

배포 실습

구성 환경

Java 1.8, Spring Boot 2.7.8, Gradle, IntelliJ Community

프로젝트 환경 - Spring initializr

테스트 컨트롤러 생성

호출 테스트를 위해 컨트롤러를 생성한다.

bootWar 빌드

2가지 방법으로 빌드 할 수 있다. IDE 를 통해 하는 방법과 gradlew 으로 빌드하는 방법을 소개한다.

IntelliJ

gradlew

프로젝트 경로로 이동, 아래 명령어 입력

./gradlew bootWar

bootWar 구조 (/프로젝트/build/libs)

내장 톰캣

실행

CMD 창에서 프로젝트 경로/build/libs 로 이동, 아래 명령어 입력

java -jar toy-0.0.1-SNAPSHOT.war

종료

실행중인 CMD 창 닫기

외장 톰캣

톰캣 설치 - Download

사용중인 운영체제에 맞는 파일을 다운로드 받는다.

구조

프로젝트 war 파일을 webapps 경로로 이동시킨다. (톰캣 설치 경로/webapps)

server.xml 수정 (톰캣 설치 경로/conf)

Context 추가

<Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">
  <!-- 추가 -->
  <Context docBase="toy-0.0.1-SNAPSHOT" path="/" reloadable="true" source="org.eclipse.jst.jee.server:toy"></Context>
</Host>

실행 (톰캣 설치 경로/bin)

./startup.sh

종료 (톰캣 설치 경로/bin)

./shutdown .sh

 


war 빌드

2가지 방법으로 빌드 할 수 있다. IDE 를 통해 하는 방법과 gradlew 으로 빌드하는 방법을 소개한다.

IntelliJ

gradlew

프로젝트 경로로 이동, 아래 명령어 입력

./gradlew war

 

war는 외장 톰캣으로만 실행이 가능하며, 위의 bootWar 외장 톰캣 실행 방식과 동일한 방법으로 실행 가능하다.

 

반응형