꿈꾸는 새벽하늘

AWS EC2에 스프링 부트 프로젝트 배포하기 본문

☁️ AWS

AWS EC2에 스프링 부트 프로젝트 배포하기

rovemin 2023. 5. 27. 04:53

이 글은 EC2와 RDS 설정을 모두 마쳤다는 것을 전제로 그 뒤의 배포 작업에 관한 내용을 다룹니다.

아직 EC2와 RDS 인스턴스가 생성되지 않은 분들은 아래 글을 참고하신 뒤 이 글을 읽으시는 것을 추천드립니다.

 

AWS 배포하기: EC2 & RDS

AWS (Amazon Web Services) AWS는 전 세계적으로 분포한 데이터 센터에서 200개가 넘는 완벽한 기능을 서비스를 제공하여 세계적으로 가장 포괄적이며 널리 채택되고 있는 클라우드이다. 핵심 서비스 유

rovemin.tistory.com

 

1. 저장된 PuTTY Session에 접속하여 자바 설치 여부 확인

java -version

 

2. 깃허브에 있는 프로젝트를 불러오기

git clone {깃허브주소}

 

3. clone을 마친 프로젝트 폴더로 이동

cd {프로젝트이름}

 

4. application.yml 파일은 깃허브에 업로드하지 않는 경우가 많으므로 EC2 서버 내에 따로 추가해주어야 합니다.

cd src/main/resources
nano application.yml	# 편집기 실행하여 application.yml 내용 옮기고 저장

단, 이제 RDS 인스턴스와도 연결해야 하기 때문에 application.yml의 일부분을 아래와 같이 바꿔줍니다.

  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://{RDS 인스턴스 엔드 포인트}:3306/{DB 이름}?createDatabaseIfNotExist=true&characterEncoding=UTF-8&characterSetResults=UTF-8
    username: {마스터 사용자 이름}
    password: {마스터 암호}

 

5. 프로젝트 내의 build.gradle에 H2 database 의존성 추가

dependencies {
    implementation "com.h2database:h2"
}

 

6. build 진행

./gradlew build
  • 만약 빌드 과정에서 권한이 부여되지 않아 에러가 발생한다면 아래 코드를 입력한 뒤 다시 빌드합니다.
chmod +x ./gradlew
  • 빌드가 너무 느리거나 중간에 멈추는 에러가 발생한다면 이는 AWS EC2 프리 티어의 메모리 부족으로 인한 문제이므로 아래 코드를 입력하면 됩니다.
# 스왑 메모리 할당
sudo dd if=/dev/zero of=/swapfile bs=128M count=16

# 스왑 파일에 대한 읽기 및 쓰기 권한 업데이트
sudo chmod 600 /swapfile

# 스왑 영역 설정
sudo mkswap /swapfile

# 스왑 공간에 스왑 파일 추가
sudo swapon /swapfile

# 위 과정이 모두 성공했는지 확인
sudo swapon -s

# 편집기에서 파일 열기
sudo vi /etc/fstab

# 파일 끝의 새로운 줄에 아래 코드를 추가하고 파일을 저장한 뒤 종료
/swapfile swap swap defaults 0 0

 

7. 빌드가 성공하면 build -> libs 폴더가 생기고 그 내부에는 jar 파일이 있습니다. ls 명령어로 jar 파일 이름을 확인하고 실행합니다. jar 파일 실행 시 마지막에 붙이는 &는 백그라운드에서도 실행한다는 의미로, EC2 콘솔에 접속되어 있지 않더라도 파일이 계속 실행되게 됩니다.

cd build/libs
ls
java -jar myproject-0.0.1-SNAPSHOT.jar &	# jar 파일명을 확인하고 정확하게 입력

 

8. 서버 배포 확인

http://{탄력적 IP 주소}:8080/

 

'☁️ AWS' 카테고리의 다른 글

CI/CD & AWS 배포  (1) 2023.06.04
클라우드 컴퓨팅  (0) 2023.05.06
AWS 배포하기: EC2 & RDS  (0) 2023.05.05