팀내에서 배포도 담당하고 있다보니, Node js를 해당 플러그인으로 무중단 배포 세팅을 해달라는 요청을 받았다.
$ npm install pm2@latest -g
# or
$ yarn global add pm2
$ pm2 start *.js # default
$ pm2 start *.sh / *.py / binary-file... # 여러가지 포맷의 파일 지원
fork
모드로 설정되어서, 단일 인스턴스는 단일 스레드로 실행되는 Node의 특징을 따르게 된다.# 앱 이름 지정
--name <app_name>
# 항상 모니터링하다가, 관련해서 파일이 변경되면 앱 재시작
--watch
# watch옵션시에 특정 폴더 경로는 무시해야할 때 (log 폴더 지정하면...이거 이용해서 제거해주자. 아니면 무한 재실행을 볼 수 있다.)
--watch --ignore-watch="[dir]/*"
# 앱이 리로드 될때 최대의 메모리 지정
--max-memory-restart <200MB>
# 로그 파일 패스 지정
--log <log_path>
# 스크립트에 추가 인수 전달
-- arg1 arg2 arg3
# 재시작할때의 딜레이 지정
--restart-delay <delay in ms>
# 로그 남길때 프리픽스로 시간 지정
--time
# 재시작 불가하도록 설정
--no-autorestart
# 주기적으로 강제 재시작이 필요할때 설정 (cron)
--cron <cron_pattern>
# Attach to application log
--no-daemon
$ pm2 restart app_name # 프로세스 종료하고 재시작
$ pm2 reload app_name # 프로세스 종료없이 재시작
$ pm2 stop app_name # 프로세스 스탑
$ pm2 delete app_name # 프로세스 삭제
all
, id
를 넣을 수 있다.all
: 모든 프로세스 대상id
: 특정 프로세스 대상$ pm2 status
$ pm2 ls
$ pm2 list
$ pm2 prettylist # json
$ pm2 monit
해당 명령어를 치면 현재 실행중인 프로세스에 대해서 모니터링이 진행가능하다.
다른 명령어들과 다르게, monit
명령어는 실시간 상태를 확인할 수 있는 모니터링 창을 열어준다.
# 프로세스 4개 늘리기
$ pm2 scale app +4
# 프로세스 4개 줄이기
$ pm2 scale app -4
# 프로세스 4개로 설정하기
$ pm2 scale app 4
pm2 에서 진행중인 프로세스에 대해서 로그를 확인하고 싶다면 다음 명령어를 사용하면 된다.
# all
$ pm2 logs
# specific process log
$ pm2 logs [process name | process id]
# lines option
$ pm2 logs --lines 200
pm2에서 Log Rotate 관리를 위해서는 pm2-logrotate
플러그인을 설치하면 됩니다.
# npm으로 설치하는 것이 아닌 pm2로 설치
$ pm2 install pm2-logrotate
# 옵션 설정은 다음과 같이 설정
$ pm2 set pm2-logrotate:<option> <value>
Options
max_size
: 로그 파일 사이즈 제한 크기 (기본값은 10M)retain
: 로그 파일을 최대 몇개까지 가지고 있을 것인지 설정 (기본값은 30개)compress
: 로그 파일을 gzip으로 압축할 것인지 여부 (기본값은 false)dateFormat
: 로그 파일 날짜 폼새 (기본값은 YYYY-MM-DD_HH-mm-ss)workerInterval
: 로그 파일 사이즈를 확인하는 1초마다의 회수 (기본값 초당 30회)rotateInterval
: cron job (기본값은 '0 0 * * *')# update pm2
$ npm install pm2@latest -g
$ pm2 update
https://pm2.keymetrics.io/docs/usage/quick-start/
https://velog.io/@altmshfkgudtjr/PM2-Node.js-%EB%AC%B4%EC%A4%91%EB%8B%A8-%EC%84%9C%EB%B9%84%EC%8A%A4