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
링크
'Java & 스프링 > 스프링부트 톺아보기' 카테고리의 다른 글
[Spring Boot] 스프링 부트의 index 페이지, 파비콘 (0) | 2019.12.02 |
---|---|
[Spring Boot] 스프링부트의 웹 jar (0) | 2019.12.02 |
[스프링 부트] 정적 리소스 - static resource (0) | 2019.10.24 |
[스프링 부트] 스프링 MVC - 스프링 부트의 Message Converter (0) | 2019.10.23 |
[스프링 부트 ] Nginx 와 함께 배포 하기(2) (1) | 2019.10.15 |
댓글