PM2 - Node.js 서버를 더 쉽게 관리하기 —1

Harry The Great
해리의 유목코딩
3 min readNov 28, 2018

본 내용은 1/2편으로 되어있습니다. 내용이 너무 쉽다면 2편으로 바로 넘어가주세요.

Node.js로 서버를 개발하다보면 마주치는 많은 문제점이 있습니다. 운영버전에서는 대표적으로 서버가 자주꺼지는 문제입니다. 특히 TypeScript 적용을 하지않으면 가장많이 마주치는 undefined에러… 다음으로 개발버전에서는 서버의 변동이 있을때 서버를 다시 켜주어야하는 것입니다. 이러한 문제를 해결하기위해 Forever와 Nodemon을 쓰고계시고 이에 불편함을 느끼셨다면…

어서와.. pm2는 처음이지?

PM2가 뭔데?

pm2는 노드 프로세스 매니징 도구로 미널환경에서 node를 관리기 편하게 도와줍니다. 대표적으로 Foerver, Nodemon에서 제공하는 Retstart 기능 그리고 실서버 Deploy, 로그 모니터링을 더 쉽게 할 수 있습니다.

설치하기/시작하기/모니터링하기

설치/시작

$ npm install pm2 -g

설치법은 매우 쉽습니다.

$ pm2 start app.js --name fb-crawling #이름에 원하는 프로세스명을 주세요.
$ pm2 start app.js --watch # watch옵션을주면 변동사항이 있을때 재시작
# 다음편에서 다루는 내용을통해 원하는 디렉토리만 watch 옵션을 줄 수 있습니다.

시작법 역시 매우 쉽습니다. 자세한 파라미터 설정은 다음편에서 이어가겠습니다.그럼 이제 잘 실행이 되었는지 봐야겠죠?

list — 목록보기

$ pm2 list

이제 최상단에 올려드린것처럼 현재 실행중인 App name(process name) 그리고 Id, 프로세스 id등을 아주 직관적으로 볼 수 있습니다. 위와 같은 형식이 아니라 직접 쉘스크립트에서 JSON파일로 받고싶다면

$ pm2 jlist # raw json형식으로 출력
$ pm2 prettylist # beatufied된 json 형식으로 출력

반면에 하나의 프로세스의 상세한 정보를 보고싶다면..

describe, monit — 모니터링

$ pm2 describe 0 //0은 아이디값

describe을 통해 개별 프로세스에대한 상세정보를 볼 수 있습니다.

pm2 monit

pm2 monit을 이용하면 전체 프로세스에서 발생하는 로그를 터미널을통해 실시간으로 볼 수 있습니다. pm2 start mongod 명령어로 몽고디비도 함께 동작시킬 수 있어 node + mongodb 환경에서 개발할때 로그를 보기 아주 유용합니다.

너무 쉽지만… 위 명령어로만 실무에서 사용하기에는 무리가있습니다. 다음편에는 자세한 파라미터 설정에대해 이어가겠습니다.

--

--

Harry The Great
해리의 유목코딩

Android & IOS Developer 😀 미디움 이외에 스니펫이나 디버그노트로 활용하는 https://www.harrymikoshi.com/ 블로그도 운영하고있습니다.