일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- CentOS7
- 백준
- snmp test
- python os
- 1697
- 정규식 문자열 출력
- InfluxDB
- selinux port 등록
- snmp
- python subprocess
- gcc 업데이트
- c3 축 가리기
- c3 초
- linux시간으로 변경
- c++ 정규식
- c3 step graph
- grafana dashboard
- gcc regex
- semanage
- regex_search
- 정규식 컴파일
- influxdb 설치
- c3 second
- c3 축 없애기
- telegraf
- centos pyhon 설치
- subporcess path
- python popen
- 정규식 활용
- g++ 업데이트
- Today
- Total
리셋 되지 말자
패키지 매니저와 PM2 본문
PM2
nodejs process가 구동중일 때, 예기지 못하게 동작이 중지되는것을 방지하여 process가 꺼지면 다시 실행시켜줌.
프로그램이 수정되는것을 관찰하고 있다가, 프로그램이 수정되면 process를 자동으로 껏다가 켜주는 역할을 함
npm으로 PM2 설치
npm install pm2 -g
-g 옵션은 설치하는 sw가 독립적이라서 어디에서든 실행될 수 있다라는 옵션
PM2로 main.js 실행
pm2 start main.js
- 실행한 화면
-------------
__/\\\\\\\\\\\\\____/\\\\____________/\\\\____/\\\\\\\\\_____
_\/\\\/////////\\\_\/\\\\\\________/\\\\\\__/\\\///////\\\___
_\/\\\_______\/\\\_\/\\\//\\\____/\\\//\\\_\///______\//\\\__
_\/\\\\\\\\\\\\\/__\/\\\\///\\\/\\\/_\/\\\___________/\\\/___
_\/\\\/////////____\/\\\__\///\\\/___\/\\\________/\\\//_____
_\/\\\_____________\/\\\____\///_____\/\\\_____/\\\//________
_\/\\\_____________\/\\\_____________\/\\\___/\\\/___________
_\/\\\_____________\/\\\_____________\/\\\__/\\\\\\\\\\\\\\\_
_\///______________\///______________\///__\///////////////__
Runtime Edition
PM2 is a Production Process Manager for Node.js applications
with a built-in Load Balancer.
Start and Daemonize any application:
$ pm2 start app.js
Load Balance 4 instances of api.js:
$ pm2 start api.js -i 4
Monitor in production:
$ pm2 monitor
Make pm2 auto-boot at server restart:
$ pm2 startup
To go further checkout:
http://pm2.io/
-------------
[PM2] Spawning PM2 daemon with pm2_home=C:\Users\rudwn\.pm2
[PM2] PM2 Successfully daemonized
[PM2] Starting C:\VSCodeFiles\JS\nodeJS_OpenTutorial\OpenTutorial\main.js in fork_mode (1 instance)
[PM2] Done.
┌─────┬─────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
│ id │ name │ namespace │ version │ mode │ pid │ uptime │ ↺ │ status │ cpu │ mem │ user │ watching │
├─────┼─────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
│ 0 │ main │ default │ N/A │ fork │ 23388 │ 0s │ 0 │ online │ 0% │ 26.9mb │ rudwn │ disabled │
└─────┴─────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘
localhot로 접속하면 똑같이 접속이 된다.
PM2 사용해보기
pm2 monit
main.js를 Process List에서 확인할 수 있다. 이 상태에서 작업관리자에서 강제로 종료를 해본다.
PID가 23388인 걸 종료 해보록 해보겠다.
main Logs에 로그가 떠야하는데 왜 안뜨지...
어쨋든 강제종료를 하면, main.js가 목록에서 사라졌다가 다시 실행된다. (PID가 변경된것으로 재실행 된 사실을 알 수 있다.)
process 목록을 보는 명령어는 pm2 list이다
PM2 프로세스 종료
id 또는 name을 인자로 주어서 종료시킬 수 있다.(위는 id로 종료시킨 모습)
PM2 자동 리로드 기능
pm2 start main.js --watch
watch 옵션을 주어서 main.js를 실행한다.
WEB 이라고 표시는되는 부분을 WEB1로 표시되도록 에디터상에서 코드만 수정하고 저장을 한다.(웹서버 재시작 x)
페이지를 reload하면 main.js를 재시작하지 않았음에도 변경된 내용이 바로 반영된 모습이다.
PM2 로그 확인
node main.js 명령어로 실행했을 때, 뭔가 에러가 있으면 콘솔에서 바로 확인이 가능했는데, pm2로 실행하면 바로 확인이 불가능 하므로 아래의 명령어로 확인한다.
pm2 log
이상태에서 다시 WEB1을 WEB으로 변경하면,
위와같이 log가 표시된다.