관리 메뉴

JIE0025

[AWS] EC2 무중단 배포 (linux - nohup) 본문

백엔드/웹, 배포

[AWS] EC2 무중단 배포 (linux - nohup)

Kangjieun11 2023. 6. 23. 19:50
728x90

 

✅ 개요

처음 AWS를 사용하는 사람들은

스프링부트를 EC2에서 실행했을때

 

1) 접속한 콘솔이 꺼지거나 

2) 접속을 잠깐이라도 안하면 

 

실행시켜놓은 Spring boot서버가 꺼지는 경험을 했을것이다. 

 

 

나도 처음에 배포에서 이런 경험을 반복해서 했었고

이를 어떻게 해결해야하는지 몰랐었는데... ㅠㅠ

 

 

사실 아주 간단한 방법으로 해결할 수 있었다!

 

 


 

✅ EC2 무중단 배포

 

이전에 EC2에서 스프링부트 서버를 실행 하는 글을 작성했었다.

 

https://jie0025.tistory.com/552

 

EC2 인스턴스에 git clone(with ssh)후, 서버 실행

✅ 개요 인스턴스에 접속하는것 까지는 이전 글을 보자. https://jie0025.tistory.com/549 [AWS] EC2 인스턴스 생성과 맥북터미널로 연결하기 ✅ 개요 2월쯤에 스택오버플로우 클론코딩을 했었는데 해당 프

jie0025.tistory.com

 

 

이 과정에서 

실행 명령어 앞에 nohup을 사용하면 무중단 배포를 할 수 있다!

 

 

$ nohup java -jar 프로젝트.jar &

 

 

✅ nohup?

nohup 명령어

 

터미널로 접속하고, 명령어를 실행한 후에 해당 터미널을 종료해도, 

계속 명령어를 실행하도록 유지하고 싶을 때 사용하는 명령어이다. 

 

 

맨 뒤에 & 는 백그라운드로 명령어를 실행하라는 것을 의미한다.

 

 

⏺ nohup.out

nohup으로 명령어를 실행하면, 로그가 nohup.out으로 리다이렉트 되는데

 

jar파일을 실행시킨 , jar파일이 위치한 곳에 nohup.out이 생긴다.

 

실행시킨 jar파일이 잘 실행되고 있는지 확인하려면 

cat nohup.out으로 로그를 확인해봐도 된다!

 

 

 

✅ 백그라운드 실행 확인

 

😃  ps -ef 명령어

ps -ef

 

실행중인 프로세스의 상태를 볼 수 있다.

 

 

 

아래 pid와 함께 실행중인 프로세스로 jar파일이 보인다. 

(pid는 라이언캐릭터 위치에 있다!!)

 

😵 서버 종료

백그라운드로 동작하는 jar파일 의  pid를 기반으로 종료시킬 수 있다.

kill -9 {pid번호}

 

 

 

 


references

 

https://blog.acronym.co.kr/555

 

https://velog.io/@hwsa1004/SpringBootAWSRDS-%EC%84%9C%EB%B2%84-%EB%AC%B4%EC%A4%91%EB%8B%A8-%EB%B0%B0%ED%8F%AC%ED%95%98%EA%B8%B0-EC2%ED%8E%B8-

 

https://www.ibm.com/docs/ko/i/7.3?topic=jobs-ps