DevOps/Cloud

[AWS] 스프링 부트를 외장 톰캣으로 EC2에 배포하기

장그래 2021. 8. 23. 18:07
반응형

외장 톰캣 설치를 설치하면서,

https://start.spring.io/ 를 통해 스프링을 세팅하고, Spring Web 의존성을 주입하면 내장 톰캣(Tomcat)이 설치되어 따로톰캣을 설치하지 않고 웹 페이지를 띄울 수 있다. 배포할 때도 마찬가지로 jar 파일만 이용하면 간단하게 EC2를 통해 웹을 배포할 수 있다. 

하지만 나는 톰캣과 war을 경험해야 한다고 생각했기 때문에, jar이 아닌 war과 톰캣을 직접 설치해서 웹을 배포하려고 한다. 

1. AWS EC2 생성 

더보기

2. WAR 파일 생성 

더보기

먼저, build.grandle에서 스프링 부트의 설정을 바꿔주자. 

1. apply plugin: 'war'  추가
(war로 빌드하기 위해서)

2. bootWar.enabled = false를 추가
(bootWar과 war의 충돌을 막기 위해 false, 우리의 목적은 외장 톰캣 서버에 배포할 예정이기에)

3. war.enabled = true를 추가

4. dependencies에 providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat' 를 추가
(내/외장 서블릿 컨테이너 모두에 사용 가능한 WAR 파일로 설정하기 위해)

plugins {
	id 'org.springframework.boot' version '2.5.3'
	id 'io.spring.dependency-management' version '1.0.11.RELEASE'
	id 'java'
}

group = 'bespinglobal'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
apply plugin: 'war' // 외장 톰캣 설정

bootWar.enabled = false //외장 톰캣 설정
war.enabled = true // 외장 톰캣 설정
dependencies {
	...
	providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat' //외장 톰캣 설정
	...
}

이후에, SpringBootServletInitializer를 상속해줘야한다.  Application.java 파일에서 아래와 같이 상속을 해준다.

- SpringCrudApplication.java 

@SpringBootApplication
public class SpringCrudApplication extends SpringBootServletInitializer {
	@Override
	protected SpringApplicationBuilder configure(SpringApplicationBuilder application){
		return application.sources(SpringCrudApplication.class);
	}

	public static void main(String[] args) {
		SpringApplication.run(SpringCrudApplication.class, args);
	}
}

이후 ./gradlew build를 하게 되면 war파일이 생성되었을 것이다. 그렇다면 성공이다 ! (/build/libs) 에서 확인해보자.

 

3. 톰캣(Tomcat) 버전 확인

 톰캣을 설치하기 전 로컬 환경에서의 톰캣 버전을 확인해보자.

톰캣 9.0.50의 버전을 사용한 것을 알 수 있다. EC2에서도 똑같은 버전을 설치할 것이다..

4. 톰캣 설치

아래 글을 참고하며 설치하자

 

[AWS] EC2 에 톰캣(Tomcat) 설치하기 (linux에 Tomcat 설치하기)

톰캣을 설치하기 전, JAVA가 설치되어있어야 한다. JAVA가 설치되어 있지 않다면 아래 글을 참고하자. Yum을 이용해서 설치해도 되지만, 9.0버전을 설치하기에 Wget을 이용할 것이다. 1) Wget으로 Tomcat

skd03052.tistory.com

5. WAR 파일 배포

1) Git 설치

sudo yum install git

2) Git Clone 

git clone [repository https 주소]

3) Spring build

chmod 777 gradlew

sudo ./gradlew build

4) war 파일을 톰캣으로 옮기기  

cd build/libs         // war 파일이 있는 폴더로 이동

sudo mv [현재 존재하는 war 파일].war ROOT.war //ROOT.war 로 이름 변경

sudo chmod 777 /home/tomcat/apache-tomcat-9.0.52/webapps // webapps 접근 권한 부여

cd /home/tomcat/apache-tomcat-9.0.52/webapps 

sudo rm -rf ROOT //루트 폴더 삭제 

cp [ROOT.war이 있는 경로] .

5) 톰캣 실행

 sudo /home/tomcat/apache-tomcat-9.0.52/bin/startup.sh

6) Public IP 주소로 들어가서 확인

반응형