본문 바로가기
Java & 스프링/스프링부트 톺아보기

[스프링 부트] war 파일과 외부 톰캣을 이용한 서버 배포

by hjhello423 2019. 10. 30.

CentOS8 환경에서 war 파일을 배포해보려고 한다.

스프링 부트 application을 jar이 아닌 war형식으로 외부 톰캣을 이용해 배포해 보자

톰캣이 설치되어 있지 않다면 아래 링크를 참조하길 바란다.

[Server] - [CentOS] tomcat 설치 하기

 

방법은 매우 간단하다.

톰캣이 설치만 되어 있다면 5분 내에 끝낼 수 있다.

 

 

스프링 부트를 war로 배포 하기 위해선 소스 수정이 필요하다.

일단 pom.xml에서 packaging 방식을 war로 변경해보자.

<packaging> 태그 부분이 war인지 확인하면 된다.

<groupId>com.hongjun423</groupId>
<artifactId>toy_project</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>

 

packaging을 war로 변경하면 mvm을 이용해 패키징 할 때 war 방식으로 패키징 될 것이다.

 

이제 main 메서드가 있는 class를 수정해 보자.

SpringBootServletInitializer라는 추상화 class를 override 하여야 한다.

SpringBootServletInitializer 구현을 통해 Spring Framework의 Servlet 3.0을 사용하고 서블릿 컨테이너에서 애플리케이션을 시작할 때 애플리케이션을 구성할 수 있다.

더 자세하게 내용을 알고 싶다면 글 아래에 있는 reference문서 링크를 확인해 보자.

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 Application extends SpringBootServletInitializer {

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

    public static void main(String[] args) {
        SpringApplication app = new SpringApplication(Application.class);
        app.run(args);
    }
}

 

 


이제 war를 tomcat을 이용해 실행시켜 보자.

우선 tomcat이 설치된 경로로 이동하고 파일 리스트를 확인해 보자.

cd /usr/local/apache-tomcat-9.0.27

 

사진에서 볼 수 있듯이 bin과 webapps 디렉토리가 있을 것이다.

이 두 개의 폴더만 기억하면 된다.

 

일단 war파일을 webapps 폴더 안에 복사해 두자.

toy_project-1.0-SNAPSHOT.war 파일을 이 폴더에 이동시켜 두었다.

여기까지가 끝이다.

 

이제 bin경로로 이동해 보자.

리눅스 환경에서 작업을 하고 있다면 아래 두 개의 파일을 이용해 톰캣을 실행, 중지시킬 수 있다.

startup.sh

shutdown.sh

 

startup.sh 파일을 이용해 실행시켰다면 webapps 디렉토리에 옮겨두었던 war파일과 같은 이름의 디렉토리가 생성되었을 것이다.

 

이제 8080 포트로 접속해 동작을 확인해 보자.

나는 '/hello' uri로 접근 시에 hello 스트링을 응답하도록 구현하였다.

아래와 같이 uri와 프로젝트 이름을 이용하여 접근하면 응답을 확인할 수 있을 것이다.

IP:8080/toy_project-1.0-SNAPSHOT/hello

 

 


링크

반응형

댓글