PM2로 무중단 배포하기

Back-end/Node.js

PM2로 무중단 배포하기

조커린 2021. 7. 17. 00:45

React.js로 만든 서버를 배포해야 하는 상황.

foreground process인 노드의 특성상 터미널이 꺼지면 서버도 꺼지게 된다. 

이러한 점을 관리해 주는 것이 PM2, Forever와 같은 것들이다.

foreground process를 background process로 바꿔준다. 

 

PM2를 사용해본 경험이 있어 사용해 보기로 한다. 

PM2에 대해서는 간단히만 알고있다. 하나는 서버가 에러로 인해 꺼졌을 때 서버를 다시 켜주는 것, 그리고 클러스터링. 또는 멀티 프로세싱이다. (클러스터링이라는 개념은 노드에서 제공하는 것으로 알고있다.. )

싱글 스레드인 노드의 특성상 프로세스를 하나씩 사용할 수 있는데 CPU의 코어수만큼 최대한 프로세스를 사용할 수 있게 해주는 기능도 있다.,,,고는 알고있지만 서버를 올릴 때는 사용하지는 않았다.ㅎㅎ(쓸 필요가 없어서)

향후 사용할 기회가 있다면 사용해보고 싶다. 

 

간단히 나같은 경우는 pm2 패키지를 설치했다. 

테스트를 위해 prod 브랜치를 새로 생성 후 서버 배포용 옵션을 추가한 후 

pm2 설치 진행

npm i pm2

 

내가 watch 옵션을 잘못 알고 줬는데...(배포시에 따로 무슨 기능 해주는 줄 ㅠㅠ 근데 아니었음)

사실 주면 안되드라... 머쓱 ㅎㅎㅎ

저처럼 하지마세요 ㅎㅋㅋ

 

 

그리고 pm2와 같은 경우는 npm 명령 실행시에  --옵션을 줘야 한다. 

npx pm2 start npm -- start

프로세스가 돌아가는 것을 볼 수 있다. 

npx pm2 logs로 로그 확인

아 워닝들....;; 어쨌든 pm2 가 npm을 실행시켜주고 있다. 

리퀘스트 로그도 어느정도는 확인이 가능하다 (섬세한 로그저장은 추가적인 설정이 필요한 것으로 알고 있음)

프로세스를 종료시킬 때는 npx pm2 kill을 사용한다. 

 

pm2에 관한 좋은 글 몇 가지를 정리해 놓기.

https://engineering.linecorp.com/ko/blog/pm2-nodejs/

 

PM2를 활용한 Node.js 무중단 서비스하기 - LINE ENGINEERING

자바스크립트는 가장 널리 사용되는 클라이언트 측 프로그래밍 언어이자 프론트엔드 웹 개발 언어 중 하나입니다. 그리고 Node.js는 Chrome의 V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타

engineering.linecorp.com

https://medium.com/harrythegreat/pm2-node-js-%EC%84%9C%EB%B2%84%EB%A5%BC-%EB%8D%94-%EC%89%BD%EA%B2%8C-%EA%B4%80%EB%A6%AC%ED%95%98%EA%B8%B0-2-d03f6396139f

'Back-end > Node.js' 카테고리의 다른 글

Sequelize 사용하기  (0) 2021.10.18
multipart/form-data를 처리하는 패키지 비교  (1) 2021.10.07
Node에서의 Module  (0) 2021.08.09
Node란? 이벤트 루프, 논블로킹  (0) 2021.06.04
Node-sass 6.0.0 incompatible with ^4.0.0.  (0) 2021.05.20