IT EDU/SPRING

[Spring] 스프링 부트 배포하기 (War 파일로 빌드)

yoonhoou 2022. 3. 18.
728x90

 

 

War 파일로 빌드 및 배포

 

1. pom.xml 

프로퍼티 값을 war로 작성한다.

 

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

... 생략
    
	<groupId>com.example</groupId>
	<artifactId>Sts02</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>war</packaging>  <!-- 이곳! -->
    
... 생략
	
</project>

 

 

2. pom.xml

- jar와는 다르게 추가적으로 dependency의 추가가 필요하다.

  이는 컴파일 단계에서만 tomcat 라이브러리를 이용(scope를 provided로 지정) 하고,

  배포 이후에는 내장 tomcat이 아닌 이미 존재하는 tomcat 서버를 이용하기 위함이다.

<dependency>
    <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-tomcat</artifactId>
      <scope>provided</scope> <!-- 안되어 있는 경우 변경! -->
</dependency>

 

 

3. Sts02Application.java

Spring Boot Application 클래스에 소스 추가하기

프로젝트에서 main 메소드가 존재하는, 스프링 부트 앱을 시작하는 역할을 하는 클래스가 있다.

(@SpringBootApplication 어노테이션이 지정되어 있음)

이 클래스에 다음과 같이 SpringBootServletInitializer를 상속하고,

@Override 메소드를 추가한다. (메소드 내 클래스명은 작업 중인 프로젝트마다 다르다.)

 

package Pack;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

@SpringBootApplication
public class Sts02Application extends SpringBootServletInitializer{
	
    // 이 부분 추가
	@Override
	protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
		return builder.sources(Sts02Application.class);
	}
	
	public static void main(String[] args) {
		SpringApplication.run(Sts02Application.class, args);
	}
}

 

 

4. War 파일 생성

- [프로젝트 우클릭] → [Run As]  → [Maven build...]를 차례로 선택한다.

- Goals에 package를 입력하고, Profiles에 pom.xml을 지워주고, Run 버튼을 클릭한다.

- console에 BUILD SUCCESS가 표시되고, 프로젝트 폴더 안 target 폴더에는 war 파일이 생성되어 있다.

  이 war 파일을 tomcat에 배포한다.

 

 

 

5. VM VirtualBox, mobaxterm 사용

1) Linux 서버를 실행 한 뒤 mobaxterm 접속

 

2) /var/lib/tomcat9/webapps 하위에 권한을 부여하고 war 파일을 넣기 위해 명령어 입력

sudo chmod 777 /var/lib/tomcat9/webapps

war 파일 추가

3) /var/lib/tomcat9/conf$ 위치에서 server.xml 수정을 위해 명령어 입력

sudo vi server.xml

 

4) vim editor에서 <Context> 코드 추가 (docBase 안은 자신의 war 파일 이름)

<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

    <Context docBase="Sts02-0.0.1-SNAPSHOT" path="/" reloadable="false"/> // 이곳!
        
    <중략...>

</Host>

 

5) tomcat server 재시작을 위한 명령어 입력

sudo systemctl restart tomcat9

 

6) ip:8080 포트 접속

 

댓글