상세 컨텐츠

본문 제목

[Node.js] PM2 소개와 설치 및 사용법

Dev, Back-End/Node.js

by HelloMinchan 2020. 2. 11. 03:42

본문

© OpenJS Foundation. All Rights Reserved.

[Node.js] PM2 소개와 설치 및 사용법

(PM2 버전 : 4.2.1, 글쓴날 : 2020.02.11)

 


* 글 쓴 날 기준으로 PM2의 최신 버전은 4.2.3입니다.


 

 

1. PM2란 무엇인가?


© 2019 PM2. All Rights Reserved.

 

1) 프로세스 매니저

우리의 Node.js에 사용성을 200% 높여주는 천금같은 패키지 매니저로 npm이 있다면, Node.jsExpress와 같은 프레임 워크를 이용해 Back-End에서 사용하고 있는 개발자들에게 감히 사용성을 20000% 높여준다 할 수 있는 한 줄기 빛인 프로세스 매니저로 바로 PM2가 있습니다. (이름 그 자체로 PM이 Process Manager의 약자입니다... 2는뭐지..??)

 

* 패키지 매니저인 npm에 대해 궁금하시다면  [Node.js] npm 소개와 설치 및 사용법


2) PM2 사용 이유

우선 Node.js서버로서 Back-End에서 사용하시려면 여러가지 고민이 생기실겁니다.

 

대표적으로,

 

(1) 서비스를 제공하고 있는 도중 갑자기 서버가 중지되면 어떡하지?

(2) Node.js는 싱글 스레드 기반인데 멀티 코어 혹은 하이퍼 스레딩을 사용하고 싶다면 어떻게 해야 하지?

 

등이 있습니다.

 

Back-End 개발자에게는 골치 아픈 이러한 문제들을 PM2를 이용하시면 문제없이 해결하실 수 있습니다!

아래의 사용법 설명에서 위 문제들의 해결 방법을 차차 설명해 드리도록 하겠습니다.


 

 


 

 

2. PM2 설치 및 사용법


1) PM2 패키지 설치

npm install pm2 -g

(-g 옵션을 주어 전역으로 설치를 해주셔야 실행명령어로 사용하실 수 있습니다.)

 

* npm 및 패키지 설치에 관해 궁금하시다면 [Node.js] npm 소개와 설치 및 사용법


2) PM2 사용법

 

(1) pm2 -version

역시 제일 기본적인 명령어인 버전 확인 명령입니다. 설치 후 잘 설치되었나 확인하실 때 사용하시면 됩니다.


(2) pm2 start example.js

PM2를 실행하는 명령어로 서버 소스코드가 작성되어 있는 js파일을 실행하시면 되겠습니다.

(실행 즉시 Daemon화 되어 종료하거나, 에러가 발생하지 않는 이상 24시간 계속 유지됩니다.)

 

* 유용한 옵션

--watch : PM2가 실행된 프로젝트의 변경사항을 감지하여 서버를 자동 리로드 해줍니다.

(서비스하기 전 개발 단계에서 js파일 같은 코드 파일이나 기타 정적 파일들을 수정할 시 변경사항이 수동으로 리로드를 하지 않아도 즉시 반영되므로 매우 편리합니다.)

-i max(코어개수) : Node.js의 싱글 스레드를 보완하기 위한 클러스터(Cluster) 모드입니다.

물론 코드 상으로 클러스터를 구현할 수도 있겠지만, PM2에서는 정말 간편하게 자체 옵션으로 클러스터 모드를 지원해 줍니다!

-i 뒤에 코어의 개수를 입력하거나 max를 쓰시면 최대 코어 개수로 클러스터링(Clustering) 됩니다.

(위의 PM2 사용 이유에서 언급했던 2번째 고민을 해결하실 수 있습니다.)

클러스터(Cluster) 모드로 실행 중인 PM2의 모습입니다.


(3) pm2 kill

start 명령과 반대로 실행 중인 PM2 Daemon을 종료시키는 명령입니다.


(4) pm2 log

실행 중인 PM2 Daemon의 log를 확인하는 명령입니다.

(터미널에서 작업 시 로그 확인을 다 하셨으면 컨트롤 + c를 눌러 빠져나오시면 됩니다.)


(5) pm2 monit

PM2로 실행한 서버의 상황을 한눈에 확인할 수 있는 화면으로 이동하는 명령입니다.

(터미널에서 작업 시 모니터 화면을 종료하시려면 q를 눌러 빠져나오실 수 있습니다.)

터미널에서의 PM2 모니터 화면입니다.


(6) pm2 startup + pm2 startup 명령의 결과로 출력된 명령(sudo env로 시작하는 명령) + pm2 save

이 명령은 pm2로 실행할 서버를 항상 자동으로 시작하게끔 부트 스크립트에 등록하는 명령입니다.

반드시 부트 스크립트에 등록하기 전 등록할 서버를 실행해 놓으셔야 하며, pm2 start up 명령을 사용하시면 터미널에 sudo env시작하는 명령어가 자동으로 생성되어 출력됩니다. 그렇게 출력되어 나온 명령어를 복사하셔서 그대로 붙여 넣은 뒤 입력해주시면 현재 실행 중인 pm2 서버가 부트 스크립트에 등록되게 됩니다. 그다음 pm2 save 명령으로 pm2 관련 변경사항을 저장해 주시면 되겠습니다.

(위의 PM2 사용 이유에서 언급했던 1번째 고민을 해결하실 수 있습니다.)


(7) pm2 unstartup + pm2 save

예상되시겠지만, 이 명령은 위의 명령과 반대로 부트 스크립트에 등록된 pm2 서버를 등록 해제시키는 명령입니다.


 

 


 

 

여기까지 Node.js의 프로세스 매니저인 PM2의 소개와 설치 및 사용법이었습니다.

제가 소개해드린 명령어 이외에도 많은 기능을 하는 명령어들이 있으니 궁금하시거나 더 알아보시고 싶으신 분들은...

 

* PM2 공식 홈페이지 : PM2 공식 홈페이지

 

PM2 - Home

Advanced process manager for production Node.js applications. Load balancer, logs facility, startup script, micro service management, at a glance.

pm2.keymetrics.io

위의 PM2 공식 홈페이지를 참조하시면 되겠습니다.

감사합니다!

관련글 더보기

댓글 영역