SpringBoot 를 배워보자/8. 배포

WAR 파일 생성 및 배포

_Blue_Sky_ 2024. 9. 29. 16:30
728x90
 

스프링 부트 WAR 파일 생성 및 배포: 상세 가이드

소개

스프링 부트는 내장 톰캣을 기본으로 제공하여 개발 환경에서의 빠른 시작을 지원하지만, 운영 환경에서는 외부 톰캣과 같은 WAS(Web Application Server)를 사용하는 경우가 많습니다. 이때 스프링 부트 애플리케이션을 WAR 파일로 만들어 배포해야 합니다.

WAR(Web Application ARchive) 파일은 웹 애플리케이션을 배포하기 위한 표준 형식으로, 서블릿, JSP, 정적 파일 등 웹 애플리케이션에 필요한 모든 자원을 포함합니다.

이 글에서는 스프링 부트 애플리케이션을 WAR 파일로 생성하고 외부 톰캣에 배포하는 과정을 상세히 설명합니다.

빌드 도구 설정

  • Maven:
    <packaging>war</packaging>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency>
    
     
    provided 범위는 컴파일 시에는 필요하지만, 실행 시에는 컨테이너에서 제공하므로 포함하지 않는다는 의미입니다.
  • Gradle:
    dependencies {
        providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
    }
    
     
728x90

SpringBootServletInitializer 클래스

스프링 부트 애플리케이션의 시작점을 지정하는 역할을 합니다.

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

public class MySpringBootServletInitializer extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(MyApp.class);
    }
}
 

WAR 파일 생성

빌드 도구를 이용하여 WAR 파일을 생성합니다.

  • Maven:
    mvn clean package
    
     
  • Gradle:
    Bash
    ./gradlew build
    
     

외부 톰캣에 배포

  1. 톰캣 설치 및 설정:
    • 톰캣을 다운로드하여 설치합니다.
    • conf/server.xml 파일을 수정하여 Connector 포트, Context Path 등을 설정합니다.
  2. WAR 파일 배포:
    • 생성된 WAR 파일을 톰캣의 webapps 디렉토리에 복사합니다.
    • 톰캣을 재시작합니다.

주의 사항

  • 내장 톰캣과의 차이:
    • WAR 파일은 외부 톰캣에서 실행되므로 내장 톰캣에서 사용하는 기능 중 일부는 사용할 수 없습니다.
    • 예를 들어, 내장 톰캣의 커넥터 설정은 사용할 수 없으며, 외부 톰캣의 설정을 사용해야 합니다.
  • 데이터베이스 연결:
    • 데이터베이스 연결 정보는 외부 톰캣 환경에 맞게 설정해야 합니다.
    • 외부 환경 변수를 사용하거나, properties 파일을 이용하여 설정하는 것이 일반적입니다.
  • 로그 설정:
    • 톰캣의 로그 설정을 변경하여 로그를 관리할 수 있습니다.
  • 배포 자동화:
    • Jenkins, Maven, Gradle 등을 이용하여 배포를 자동화할 수 있습니다.

추가 고려 사항

  • 프로파일:
    • 스프링 부트의 프로파일 기능을 이용하여 개발, 테스트, 운영 환경별 설정을 관리할 수 있습니다.
  • 클라우드 환경:
    • AWS, GCP, Azure 등 클라우드 환경에서 톰캣을 실행하고 WAR 파일을 배포할 수 있습니다.
  • 컨테이너 환경:
    • Docker, Kubernetes 등 컨테이너 환경에서 톰캣 이미지를 생성하고 WAR 파일을 배포할 수 있습니다.

결론

스프링 부트 애플리케이션을 WAR 파일로 생성하고 외부 톰캣에 배포하는 과정은 개발 환경에서 운영 환경으로 전환하기 위한 필수적인 단계입니다. 이 글에서 설명한 내용을 바탕으로 스프링 부트 애플리케이션을 성공적으로 배포할 수 있기를 바랍니다.

 

728x90