자두의 데브로그

[프로젝트] EC2에 Spring Boot 프로젝트 배포하기 (2) 서버 실행시키기 본문

프로젝트/springboot

[프로젝트] EC2에 Spring Boot 프로젝트 배포하기 (2) 서버 실행시키기

왕자두 2024. 8. 6. 17:48

1. 빌드 파일 생성

$ ./gradlew build

 

실패 ...!!!

 

원인이 DB 연결 오류로 보여서 RDS 생성하고 연결해주었다.

 

그러나 ...

 

Test 실행한다면서 76%에서 멈춰서 안돌아감..! AWS 콘솔 확인해보니까 CPU 99%까지 찍었는데도 안되는 거였음..! 보통 이러면 메모리를 늘려주는데 아래와 같은 과정을 거치면 된다.

메모리 사용량 확인하기
$ free

스왑 파일 생성하기
$ sudo dd if=/dev/zero of=/swapfile bs=128M count

스왑 파일 권한 설정하기
$ sudo chmod 600 /swapfile

Linux 스왑 영역 설정하기
$ sudo mkswap /swapfile

스왑 공간에 스왑 파일 추가하여 즉시 파일 사용 가능하게 설정하기
$ sudo swapon /swapfile

프로시저가 성공적인지 확인하기
$ sudo swapon -s

/etc/fstab 파일을 편집하여 부팅 시 스왑 파일 시작하게 만들기
$ sudo vi /etc/fstab

연 파일 내 가장 마지막 줄에 아래 명령어 추가하고 저장
/swapfile swap swap defaults 0 0

 

https://repost.aws/ko/knowledge-center/ec2-memory-swap-file

 

스왑 파일을 사용하여 Amazon EC2 인스턴스에서 메모리를 스왑 스페이스로 할당합니다.

Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에서 스왑 파일로 사용할 메모리를 할당하고 싶습니다. 어떻게 해야 하나요?

repost.aws

 

이거 하고 나서 다시 free 명령어로 메모리 사용량 확인해보면 swap 메모리가 추가된 것을 볼 수 있다.

 

2. 생성된 build/libs/ ~.jar 파일 확인

$ ls
[플젝명]-0.0.1-SNAPSHOT-plain.jar  [플젝명]-0.0.1-SNAPSHOT.jar

 

3. 백그라운드에서 jar 파일 실행하기

$ nohup java -jar [플젝명]-0.0.1-SNAPSHOT.jar &

 

4. control+c 를 통해 터미널로 나가서 현재 실행되고 있는 프로세스 및 생성된 로그 파일 확인 (build/libs/nohup.out)

실행되고 있는 프로세스 확인
$ jobs
[1]+  Running                 nohup java -jar [플젝명]-0.0.1-SNAPSHOT.jar &

생성된 로그 파일 확인
$ cat nohup.out

 

5. 백그라운드에서 실행되고 있는 프로젝트 종료하기

  • 인덱스: jobs 명령어를 통해 확인된 번호
$ fg %인덱스

 

후 control+c 하면 종료된다.

 

* 까먹고 8080 포트 쓰고 있던 프로젝트 종료하지 않고 바로 재실행해버렸다면..?

8080 이미 사용되고 있다는 오류를 내뱉음. 그러나 당황하지 않고 현재 8080 포트를 사용하고 있는 프로세스를 확인하는 명령어를 친다.

$ lsof -i :8080
$ kill [PID]

 

프로젝트를 실행하고 나서 시간이 좀 경과하면 jobs 명령어로도 실행되고 있는 프로젝트 목록이 나오지 않아서 위 명령어를 통해 8080 포트가 사용되고 있다면 kill로 해당 프로세스를 종료한다.