인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

SJ님의 프로필 이미지

작성한 질문수

비전공자도 이해할 수 있는 CI/CD 입문·실전

[실습] 개인 프로젝트에서 많이 쓰는 CI/CD 구축 방법 - 1

pm2 restart

작성

·

84

·

수정됨

0

만약에 수정된것을 git pull 받고 pm2 를 다시 동작시키는거면

 

1. 

git pull

npm i

npm run build

pm2 reload

로 해도 되는걸로 알고있는데

kill 죽이고 나서 다시 restart 하는 이유가 있나요 ?

 

  1. 서버안에서 npm run build 하게 되면 메모리 hang 으로 서버가 뻗어버리던데 이럴땐 어떻게 해결하시나요 ?? github actions 라는 컴퓨터 한대를 빌린다고 하셔서 거기에 빌드를 하면 메모리 이슈가 없겠구나 생각이 드는데 스크립트를 보면 결국엔 ssh 로 ec2 host 접근해서 빌드 하더라고요 그러면 ec2 서버내에서 빌드하는게 아닌가 ?? 생각이 들어서요 ㅎㅎ

답변 2

0

JSCODE 박재성님의 프로필 이미지
JSCODE 박재성
지식공유자

안녕하세요 SJ님! 질문해주신 내용에 대해 하나씩 답변 드려볼게요:)

 

  1. 말씀해주신 대로 pm2 kill -> restart를 하지 않고 pm2 reload를 통해서 서버를 재시작 시키셔도 됩니다! 강의에서는 직관적인 이해를 위해서 pm2 kill -> restart 방식으로 설명드렸습니다~!!

     

  2. 말씀해주신 대로 빌드를 하는 과정은 생각보다 메모리를 많이 잡아먹기 때문에 서버가 뻗어버리는 경우가 종종 있습니다. 그래서 빌드 작업을 Github Actions에서 진행하고 scp를 활용해 서버로 전달하는 방식을 취하기도 합니다! 이 방식을 활용해서 적용시켜보셔도 좋은 경험이 될 것 같네요😊

 

이 외로 궁금하신 점 또 생기시면 질문 남겨주세요~~~

SJ님의 프로필 이미지
SJ
질문자

말씀하신 방법을 하게 되면

github actions 에서 ssh 이 처음부터하는게 아니라

scp 를 하고 난후에 ssh 로 접근하고 나서

서버에서는 단순 pm2 reload 만 하게 되나요 ?

JSCODE 박재성님의 프로필 이미지
JSCODE 박재성
지식공유자

네 맞습니다! scp로 먼저 빌드된 파일을 ec2로 전송한 뒤에 ssh로 접근해서 pm2 reload만 하는 형식으로 하시면 됩니다~!!

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. SJ님.

Git에서 코드를 pull한 후, PM2를 재시작하는 과정에 대해 질문해 주셨습니다. 기본적으로 제안하신 방법은 맞습니다. Git에서 최신 코드를 가져오고 필요하다면 의존성을 설치(npm install), 빌드를 수행(npm run build)한 후 PM2를 재시작(pm2 reload)하는 방식입니다.

일반적인 코드 갱신 과정:

  1. git pull: 최신 코드를 원격 저장소로부터 가져옵니다.
  2. npm install: (필요 시) 새로 추가된 의존성을 설치합니다.
  3. npm run build: (필요 시) 새로 가져온 코드를 빌드합니다.
  4. pm2 reload : 애플리케이션을 재시작합니다. 이미 운영 중인 프로세스를 중단하지 않고 새로 빌드된 코드를 적용할 수 있습니다.

PM2는 zero-downtime을 지원하는 역할을 통해 프로세스의 업데이트를 보다 원활하게 처리할 수 있습니다. 이는 즉시 수행되지 않는 상황에서 잠깐의 다운타임을 피할 수 있습니다.

아래는 유사한 문제와 해결책에 대한 링크입니다. 참고하시면 좋을 것 같습니다:

저는 질문자님의 이해를 돕고자 기존의 질문과 답변을 바탕으로 유사한 사례를 참고하여 안내드립니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

SJ님의 프로필 이미지

작성한 질문수

질문하기