본문 바로가기
Clone Coding/스프링 부트와 AWS

[AWS EC2] EC2 서버에 프로젝트 배포하기

by 연로그 2021. 2. 15.
반응형

프로젝트는 깃허브에서 받아올 것이다.

putty를 통해 EC2를 접속하고 git을 설치하자

$ sudo yum install git
$ git --version

 

성공적으로 git을 설치한 화면

프로젝트 저장할 디렉토리 생성 및 이동

$ mkdir ~/app && mkdir ~/app/setp1
$ cd ~/app/step1

 

클론

$ git clone [깃허브 레포지토리 주소]

클론이 완료된 화면

 

파일 복사 확인

참고로 클론된 프로젝트명은 레포지토리 이름을 확인하면 된다.

$ cd [클론된 프로젝트명]
$ ll

 

코드들이 잘 수행되는지 테스트로 확인해보기

여기 테스트에서 정말 다양한 오류가 발생한다ㅠㅠ

$ ./gradlew test

 

오류1

./gradlew: Permission denied

-> 아래 명령어로 실행 권한을 부여

$ chmod +x ./gradlew

 

오류2

Failed to apply plugin [id 'org.springframework.boot']

FAILURE: Build failed with an exception.

* Where:
Build file '/home/ec2-user/app/step1/springboot-aws/build.gradle' line: 16

* What went wrong:
A problem occurred evaluating root project 'springboot_aws'.
> Failed to apply plugin [id 'org.springframework.boot']
   > Spring Boot plugin requires Gradle 4.4 or later. The current version is Gradle 4.3

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

* Get more help at https://help.gradle.org

BUILD FAILED in 1s

gradle 버전이 너무 낮아서 발생하는 문제다.

확인해보니 gradlew 버전이 4.3으로 되어있는데 스프링부트를 이용하기 위해서는 최소 4.4 이상을 사용해야 한다.

 

-> 방법1

$ cd gradle/wrapper
$ vi gradle-wrapper.properties

버전 수정한 뒤 저장

 

-> 방법2 (추천)

로컬에서 수정 -> 깃허브에 푸시 -> ec2에서 "git pull" 실행

 

오류3

OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00007f1e19340000, 65536, 1) failed; error='Cannot allocate memory' (errno=12)

시스템의 물리적 RAM이나 스왑 공간의 부족이 원인이라고 한다.

(AWS 무료 버전은 초기 SWAP 메모리의 디폴트가 0)

 

다음 명령어를 통해 swap 메모리 확인이 가능하다

$ free -h

swap 메모리가 0B인 상태

$ cd //루트로 돌아가기
$ sudo dd if=/dev/zero of=/swapfile bs=128M count=32

128M 크기의 파일이 32개 생성된다는 의미인데 dd: memory exhausted by input buffer of size ... 이런 에러가 뜨면 용량을 작게 파일 개수를 더 많이 변경해서 생성하면 된다.

 

$ sudo chmode 600 /swapfile  // 파일에 읽기 쓰기 권한 부여
$ sudo mkswap /swapfile      // 스왑 영역 설정
$ sudo swapon /swapfile      // 스왑 공간에 스왑 파일 추가 (파일 즉시 사용할 수 있도록)
$ sudo swapon -s             // 절차 성공했는지 확인

fstab 파일을 편집해 부팅 시 스왑 파일 활성화하도록 수정

$ sudo vi /etc/fstab

파일 끝에 "/swapfile swap swap defaults 0 0" 추가 및 저장

 

build 성공 화면

 


해당 게시글은 [ 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 / 이동욱 ] 책을 따라한 것을 정리하기 위한 게시글입니다. 요약, 생략한 부분이 많으니 보다 자세한 설명은 책 구매를 권장합니다.

 

참고

github.com/jojoldu/freelec-springboot2-webservice/issues/415

aws.amazon.com/ko/premiumsupport/knowledge-center/ec2-memory-swap-file/

 

반응형