PM2
- Node.js 애플리케이션용 프로덕션 프로세스 관리자
- 로드 밸런서 기본 제공
- 앱을 항상 작동 상태로 유지
- 시스템 가동 중단 없이 앱을 다시 로드
- MAX MEMORY RESTART 기능을 제공하는데 커맨드라인/JSON/코드(JS) 등으로 설정 가능하다.
- 일반적인 시스템 관리 태스크를 쉽게 처리 가능
- 애플리케이션 로깅, 모니터링 및 클러스터링을 관리
- 클러스터 모드의 경우, 여러개의 프로세스를 생성해놓고, 이를 PM2에서 자동으로 로드밸런싱으로 지원해주기 때문에, 앞단 웹 서버(Nginx, Apache Server 등)에서 프록시 설정만 간단히 해줘도 된다.
설치
1
| $ [sudo] npm install pm2 -g
|
기본 사용
앱을 시작할때 즉시 백그라운드로 보내진다.
메뉴얼을 읽으면서 가장 괜찮다고 생각한 부분이 바로 다른 스크립트 언어도 같이 지원하는 부분이었다.
1 2 3 4 5 6 7
| $ pm2 start echo.pl --interpreter=perl
$ pm2 start echo.coffee $ pm2 start echo.php $ pm2 start echo.py $ pm2 start echo.sh $ pm2 start echo.rb
|
어플리케이션 설정 파일 사용
JSON, YML 포맷으로 만들어진 파일을 일종의 시작 프로파일로 사용할 수 있다.
1
| $ pm2 start start.yml(start.json)
|
start.yml
1 2 3 4 5 6 7 8 9 10
| apps: - script : app.js instances: 4 exec_mode: cluster - script : worker.js watch : true env : NODE_ENV: development env_production: NODE_ENV: production
|
start.json
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| { "apps" : [ { "name" : "bash-worker", "script" : "./a-bash-script", "exec_interpreter": "bash", "exec_mode" : "fork_mode" }, { "name" : "ruby-worker", "script" : "./some-ruby-script", "exec_interpreter": "ruby", "exec_mode" : "fork_mode" } ] }
|
CheatSheat
- 출처 : PM2 공식 홈페이지
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| $ pm2 start app.js --name my-api
$ pm2 start app.js -i 0 $ pm2 start app.js -i max
$ pm2 list $ pm2 jlist $ pm2 prettylist
$ pm2 describe 0 $ pm2 monit
$ pm2 logs [--raw] $ pm2 flush $ pm2 reloadLogs
$ pm2 stop all $ pm2 restart all
$ pm2 reload all $ pm2 gracefulReload all
$ pm2 stop 0 $ pm2 restart 0
$ pm2 delete 0 $ pm2 delete all
$ pm2 reset <process> $ pm2 updatePM2 $ pm2 ping $ pm2 sendSignal SIGUSR2 my-app $ pm2 start app.js --no-daemon $ pm2 start app.js --no-vizion $ pm2 start app.js --no-autorestart
|
참고