[SpringBoot] 프로젝트 Tomcat 서버에 배포하기 (Maven)
오늘은 SpringBoot 프로젝트를 war 파일로 말아서 tomcat 서버에 배포하는 방법을 정리해볼 것입니다!
1. 프로젝트 코드 수정
SpringBoot는 기본적으로 jar로 배포하도록 되어있으니 war로 배포하기 위해서는 코드를 수정해야 합니다.
1-1. pom.xml
(1) dependency 추가
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
SpringBoot는 기본적으로 내장된 톰캣을 사용하며 War 배포파일로 패키징할 때는 이러한 내장된 톰캣을 제외시킬 필요가 있습니다.
따라서 scope를 provided로 설정합니다.
(2) packaging 방법 변경
<packaging>war</packaging>
(3) war 파일 명 수정 (선택)
<finalName>test</finalName>
war 파일로 패키징이 되면 파일명에 패키징 버전이 포함되어 보기 안좋다고 생각할 수 있습니다. (ex. project_0.0.1-SNAPSHOT.war)
<build> 태그 안에 위 코드를 작성하면 패키징할 때 버전이 포함되지 않은 파일명으로 나오게 됩니다. (ex. test.war)
1-2. TestApplication.java
@SpringBootApplication
public class TestApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(TestApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(TestApplication.class, args);
}
}
SpringBootServletInitializer 클래스를 상속받아 configure 메소드를 오버라이드합니다.
위와 같은 설정은 Servlet Container 기동시에 스프링 설정을 적용시켜줍니다.
여기까지 코드 수정은 모두 완료되었다!
2. war 배포파일 생성
- 프로젝트 우클릭 후 [Run As] -> [9 Maven install] 클릭합니다.
- console에 'Build success' 라고 뜨면 성공적으로 war 배포파일이 생성된 것이고 target 폴더에서 찾을 수 있습니다.
3. tomcat 설정
- 아래 url에서 원하는 버전의 톰캣을 다운로드 받아줍니다.
https://tomcat.apache.org/download-90.cgi
Apache Tomcat® - Apache Tomcat 9 Software Downloads
Welcome to the Apache Tomcat® 9.x software download page. This page provides download links for obtaining the latest version of Tomcat 9.0.x software, as well as links to the archives of older releases. Unsure which version you need? Specification version
tomcat.apache.org
- war 배포파일을 tomcat > webapps 경로에 복사합니다.
- tomcat > conf > server.xml 파일을 수정합니다.
(1) 셧다운 포트 설정
<Server port="____" shutdown="SHUTDOWN">
- 사용중인 포트와 충돌이 일어나면 서버가 다운될 수 있으므로 사용중이지 않은 포트번호를 입력합니다.
(2) 기동 포트 설정
<Connector port="____" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateKeystoreFile="conf/localhost-rsa.jks" type="RSA" />
</SSLHostConfig>
</Connector>
- 톰캣의 기본 포트는 '8080' 이며 프로젝트마다 다른 포트번호를 사용해야 충돌이 일어나지 않습니다.
- 사용중이지 않은 포트번호를 입력합니다.
(3) path 설정
<Context path="/test" docBase="test" reloadable="true" sessionCookieName="TEST_JSESSIONID"/>
- path에는 url에 포함할 구분된 프로젝트명을 입력해줍니다.
- docBase에는 기동시킬 프로젝트의 war 파일명을 입력합니다.
4. tomcat 서버 기동
- tomcat > bin 경로에 있는 startup.sh 파일을 실행하면 톰캣이 war 파일을 풀어줌과 동시에 서버를 기동시켜줍니다.
(shutdown.sh 파일을 실행하면 서버가 종료됩니다.)
- https://localhost:포트번호/path명 으로 접속해서 확인해봅니다.
☆★☆
JAVA 11 버전인 상태에서는 위처럼 해도 url에 접속이 안돼서 버전을 8로 변경했더니 정상적으로 작동되었습니다.
이러한 부분에 대해서는 추후에 찾아볼 예정입니다.
☆★☆