안녕하세요 Lotts 입니다 😉
저번 포스팅인
React로 영화 검색 사이트를 만들어보자 - 세 번째 네이버 API 사용 / React 배포 / CORS 설정 하기
에서 잠깐 소개해드렸는데요
node의 server.js를 기동 할 때 pm2를 사용해 봤습니다
그때의 약속을 지키고자
이렇게 포스팅을 하게 되었습니다
이번 포스팅 주제는
데몬 프로세스의 관리 도구인
❝
PM2
❞
입니다
👏👏👏👏
PM2는 process manager 2의 약자이며
node의 응용 프로그램을 관리하는 프로세스 관리 도구입니다
그렇다면 우리가 알고 있는 또 다른 관리 도구가
생각나실 겁니다 😉
바로 forever죠
저도 처음에는 forever를 사용했답니다
🔎 GitHub 비교
forever는 ⭐가 12.8K에 fork는 932이고
pm2는 ⭐가 32K에 fork가 2.2K로
pm2가 약 3배 정도 많아 보입니다
😁
🔎pm2의 장점
✅ 로드 밸런서가 내장되어 있다
✅ 콘솔에서 모니터링이 가능하다
pm2에 대해서 자세히 알아보겠습니다 🔎
📢 PM2 프로세스 시작
pm2를 설치해보고
서버 프로세스를 기동 해보도록 하겠습니다
✅ PM2 설치
$ npm install pm2 -g
-g는 global의 약자로 전역 설치를 뜻합니다
전역 설치를 진행하면 모든 프로젝트가 공통으로 사용할 수 있게 해 줍니다
✅ App 시작
$ pm2 start app.js
💡 옵션
$ pm2 start app.js --name 앱 이름
실행하는 App의 이름을 지정할 수 있습니다
📢 PM2 프로세스 관리
노드를 잘 다루기 위해
PM2의 관리 명령어를 살펴보겠습니다 🔎
✅ pm2 재시작
$ pm2 restart
프로세스를 kill 한 후에 다시 기동 합니다
✅ pm2 중지
$ pm2 stop
status가 stopped로 변경되며 프로세스가 중지됩니다
✅ pm2 삭제
$ pm2 delete
✅ pm2 리로드
$ pm2 reload
프로세스의 다운타임을 0초로 만든 후에 다시 로드합니다
💡 옵션
모든 명령어 뒤에 다음과 같은 옵션을 넣을 수 있습니다
📍 ID
명령어 뒤에 특정 프로세스의 ID를 입력해주면 해당 ID의 프로세스만 적용됩니다
id 확인은 pm2 list라는 목록 보기를 통해서 확인할 수 있습니다
$ pm2 [stop|restart|reload|delete] id
📍 ALL
모든 프로세스에 적용됩니다
$ pm2 [stop|restart|reload|delete] all
📢 pm2 모니터링
node의 상태를 모니터링할 수 있는
pm2의 기능을 살펴보겠습니다 🔎
✅ pm2 목록
$ pm2 [list|ls|status]
node 프로세스의 id나 status, pid 등 다양한 정보를 볼 수 있는 리스트 옵션입니다
✅ pm2 목록 JSON
$ pm2 jlist
$ pm2 prettylist
재미있는 건 목록을 JSON 형태로도 받아 올 수 있습니다.
그러면 해당 정보를 가져와 서버 프로세스의 모니터링을 웹에서도 만들 수도 있을 거 같습니다 😉
✅ pm2 상세 정보
$ pm2 show App이름 or ID
node 프로세스의 상세한 정보를 확인하기 위해서는 show 옵션을 사용하면 됩니다
✅ pm2 모니터링
$ pm2 monit
pm2에서 제공하는 콘솔 모니터링입니다
왼쪽 상단에 프로세스 목록과 오른쪽 상단에는 로그정보를 볼 수 있고 Custom Metrics, Metadata를 볼 수 있습니다
✅ pm2 로그
$ pm2 logs
$pm2 logs --lines 100
콘솔에 로그정보를 볼 수 있는 기능이며 리눅스의 tail 명령어처럼 logs 정보를 실시간으로 볼 수 있습니다
--lines 옵션을 추가하면 -f처럼 이전 라인도 같이 출력됩니다
로그를 중지할 때는 ctrl + c로 종료하시면 됩니다
📢 마무리
node 서버 프로세스를 관리하기 위해
보다 편리하고 쉽게 도와주는
PM2
에 대해서 알아보았습니다
👏👏👏
위의 기본적인 기능 이외의 cluster mode나 ecosystem File 등 훨씬 더 많은 기능이 있으니
공식 홈페이지를 참조하시면 좋을 거 같습니다 😊
'Programming > NodeJS' 카테고리의 다른 글
node.js forever 사용 시 multer 이미지 등록 에러 (0) | 2020.01.02 |
---|---|
node.js forever 사용법 (1) | 2020.01.02 |
node.js 소셜 로그인 연동( naver ) (4) | 2019.10.15 |