PM2 유틸리티 시작 설명서
PM2는 node 프로세스 관리 도구로 성능 모니터링, 자동 재부팅, 부하 균형 등 많은 node 응용 프로그램 관리의 번거로운 작업을 간소화할 수 있고 사용이 매우 간단하다.
PM2의 일반적인 기능 및 구성에 대해 설명하는 엔트리 레벨은 다음과 같습니다.
설치하다.
전역적으로 설치하는 것은 정말 더 간단할 수 없다.
npm install -g pm2
카탈로그 소개
pm2가 설치되면 아래 디렉터리가 자동으로 생성됩니다.서류 이름을 보면 기본적으로 뭘 하는지 알 수 있고 번역을 하지 않는다.
$HOME/.pm2
will contain all PM2 related files $HOME/.pm2/logs
will contain all applications logs $HOME/.pm2/pids
will contain all applications pids $HOME/.pm2/pm2.log
PM2 logs $HOME/.pm2/pm2.pid
PM2 pid $HOME/.pm2/rpc.sock
Socket file for remote commands $HOME/.pm2/pub.sock
Socket file for publishable events $HOME/.pm2/conf.js
PM2 Configuration 시작 자습서
우리가 가장 좋아하는express 앱을 골라서 예를 들자.일반적으로 우리는
npm start
를 통해 응용 프로그램을 시작하는데 사실은 호출node ./bin/www
이다.그럼주의, 여기
--watch
파라미터를 사용했습니다. 이것은 당신의express 응용 코드가 변할 때pm2가 당신을 도와 서비스를 다시 시작할 수 있다는 것을 의미합니다.pm2 start ./bin/www --watch
입문은 너무 간단해서 할 말이 없다.공식 문서에 직접 올리기http://pm2.keymetrics.io/docs...
일반 명령
부팅
매개변수 설명:
--watch
: 응용 디렉터리의 변화를 감청하고 변화가 발생하면 자동으로 다시 시작합니다.만약 정확하게 감청하고 듣지 않는 디렉터리를 원한다면, 설정 파일을 통해 하는 것이 가장 좋다.-i --instances
: 부하 균형에 사용할 수 있는 실례가 몇 개 있습니까?만약-i 0
또는 -i max
라면 현재 기계의 핵수에 따라 실례 수를 확정한다.--ignore-watch
: 감청된 디렉터리/파일을 제외하면 특정한 파일 이름일 수도 있고 정규일 수도 있다.예컨대--ignore-watch="test node_modules "some scripts""
-n --name
: 응용된 이름.앱 정보를 볼 때 사용할 수 있다.-o --output
: 표준 출력 로그 파일의 경로입니다.-e --error
: 오류 출력 로그 파일의 경로입니다.--interpreter
:the interpreter pm2 should use for executing app (bash, python...).예를 들어 당신이 사용하는 커피스크립트를 사용해서 응용 프로그램을 작성합니다.전체 명령행 매개변수 목록:주소
pm2 start app.js --watch -i 2
재부팅
pm2 restart app.js
정지하다
특정 애플리케이션을 중지합니다.먼저
pm2 list
를 통해 응용 프로그램의 이름이나 프로세스 id를 얻을 수 있습니다.pm2 stop app_name|app_id
모든 응용을 중지하려면
pm2 stop all
삭제
유사
pm2 stop
:pm2 stop app_name|app_id
pm2 stop all
프로세스 상태 보기
pm2 list
프로세스 정보 보기
[root@iZ94wb7tioqZ pids]# pm2 describe 0
Describing process with id 0 - name oc-server
┌───────────────────┬──────────────────────────────────────────────────────────────┐
│ status │ online │
│ name │ oc-server │
│ id │ 0 │
│ path │ /data/file/qiquan/over_the_counter/server/bin/www │
│ args │ │
│ exec cwd │ /data/file/qiquan/over_the_counter/server │
│ error log path │ /data/file/qiquan/over_the_counter/server/logs/app-err-0.log │
│ out log path │ /data/file/qiquan/over_the_counter/server/logs/app-out-0.log │
│ pid path │ /root/.pm2/pids/oc-server-0.pid │
│ mode │ fork_mode │
│ node v8 arguments │ │
│ watch & reload │ │
│ interpreter │ node │
│ restarts │ 293 │
│ unstable restarts │ 0 │
│ uptime │ 87m │
│ created at │ 2016-08-26T08:13:43.705Z │
└───────────────────┴──────────────────────────────────────────────────────────────┘
프로파일
간단히 설명하다
yaml
또는 json
파일을 선택할 수 있으며 개인이 세탁한 것을 보십시오.json
형식의 프로필은pm2를 일반적인 js 파일로 처리하기 때문에 주석을 추가하거나 코드를 작성할 수 있어 동적 조정 설정에 좋다.간단한 예를 들어 전체 설정 설명은 공식 문서를 참고하십시오.
{
"name" : "fis-receiver", //
"script" : "./bin/www", //
"cwd" : "./", //
"watch": [ // , ,
"bin",
"routers"
],
"ignore_watch" : [ //
"node_modules",
"logs",
"public"
],
"watch_options": {
"followSymlinks": false
},
"error_file" : "./logs/app-err.log", //
"out_file" : "./logs/app-out.log", //
"env": {
"NODE_ENV": "production" // ,
}
}
자동 재시작
앞에서 언급한 바와 같이 여기에 명령행을 붙이고 여기를 더 많이 클릭하세요.
pm2 start app.js --watch
전체 프로젝트를 감시하는 파일입니다. 지정한 파일과 디렉터리만 감청하려면 설정 파일의
watch
, ignore_watch
필드를 통해 설정하는 것을 권장합니다.환경 전환
실제 프로젝트 개발에서 우리의 응용은 자주 여러 환경에 배치해야 한다. 예를 들어 개발 환경, 테스트 환경, 생산 환경 등이다.서로 다른 환경에서 때때로 설정 항목에 차이가 있을 수 있다. 예를 들어 링크의 데이터베이스 주소가 다르다는 등이다.
이런 장면에 대해pm2도 잘 지원할 수 있습니다.먼저 설정 파일에서
env_xx
를 통해 서로 다른 환경의 설정을 설명한 다음에 응용 프로그램을 시작할 때 --env
파라미터를 통해 실행 환경을 지정합니다.환경 구성 선언
우선, 설정 파일에서
env
옵션을 통해 여러 환경 설정을 설명합니다.간단한 설명:env
는 기본 환경 설정(생산 환경)이고, env_dev
、env_test
는 각각 개발, 테스트 환경이다.환경에 따라 NODE_ENV
, REMOTE_ADDR
필드의 값이 다르다는 것을 알 수 있다.process.env.REMOTE_ADDR
등을 통해 설정의 생명 변수를 읽을 수 있습니다. "env": {
"NODE_ENV": "production",
"REMOTE_ADDR": "http://www.example.com/"
},
"env_dev": {
"NODE_ENV": "development",
"REMOTE_ADDR": "http://wdev.example.com/"
},
"env_test": {
"NODE_ENV": "test",
"REMOTE_ADDR": "http://wtest.example.com/"
}
시작 지정 환경
아래 시작 스크립트(개발 환경)를 통해 실행된다고 가정하면 이때
process.env.REMOTE_ADDR
의 값은 상응하는 것이다http://wdev.example.com/, 스스로 시험해 볼 수 있다.pm2 start app.js --env dev
부하 균형
명령은 다음과 같습니다. 세 개의 프로세스가 열려 있음을 나타냅니다.만약
-i 0
라면, 기계의 현재 핵 수에 따라 가능한 한 많은 프로세스를 자동으로 시작할 것이다.pm2 start app.js -i 3 #
pm2 start app.js -i max # CPU ,
참조 문서:클릭하여 보기
로그 보기
로그 파일을 열어 로그를 볼 수 있는 것 외에
pm2 logs
를 통해 실시간 로그를 볼 수 있다.이 점은 온라인 문제에 대한 조사가 매우 중요하다.예를 들어 어떤 node 서비스가 갑자기 비정상적으로 재부팅되었다면pm2에서 제공하는 로그 도구를 통해 실시간 로그를 볼 수 있습니다. 스크립트 오류와 같은 비정상적인 재부팅이 있는지 확인할 수 있습니다.
pm2 logs
명령tab 완성
pm2 --help
를 실행하면 pm2
가 지원하는 하위 명령이 매우 많은 것을 볼 수 있다. 이때 자동으로 완성되는 기능이 매우 중요하다.다음 명령을 실행합니다.축하합니다,tab을 통해 자동으로 완성할 수 있습니다.디테일은 여기에 참고할 수 있습니다.
pm2 completion install
source ~/.bash_profile
전원 켜기 자동 부팅
pm2 startup
를 통해 작동을 시작할 수 있습니다.세부 사항은 참고할 수 있습니다.대략적인 절차는 다음과 같다.pm2 save
를 통해 현재 프로세스 상태를 저장합니다.pm2 startup [platform]
를 통해 전원 켜기 자동 시작 명령을 생성합니다.(콘솔 출력을 확인하십시오.)node args 전송
명령줄과 프로필을 통해 직접 예시합니다.
명령줄:
pm2 start app.js --node-args="--harmony"
구성 파일:
{
"name" : "oc-server",
"script" : "app.js",
"node_args" : "--harmony"
}
실례 설명
centos
에서 다음 명령을 실행하면 됩니다.운행이 끝난 후에 기계를 다시 켜서 설치가 성공했는지 확인하는 것을 강력히 권장합니다.[root@iZ94wb7tioqZ option_analysis]# pm2 save
[root@iZ94wb7tioqZ option_analysis]# pm2 startup centos
[PM2] Generating system init script in /etc/init.d/pm2-init.sh
[PM2] Making script booting at startup...
[PM2] /var/lock/subsys/pm2-init.sh lockfile has been added
[PM2] -centos- Using the command:
su -c "chmod +x /etc/init.d/pm2-init.sh; chkconfig --add pm2-init.sh"
[PM2] Done.
[root@iZ94wb7tioqZ option_analysis]# pm2 save
[PM2] Dumping processes
원격 배포
공식 문서를 참고할 수 있고 배치도 복잡하지 않으니 쓸 때 다시 이곳의 구덩이를 기입하세요.TODO
공식 문서:http://pm2.keymetrics.io/docs...
모니터
다음 명령을 실행하여 현재pm2를 통해 실행 중인 프로세스의 상태를 보십시오.
pm2 monit
유사한 출력 보기
[root@oneday-dev0 server]# pm2 monit
⌬ PM2 monitoring (To go further check out https://app.keymetrics.io)
[ ] 0 %
⌬ PM2 monitoring (To go further check o[||||||||||||||| ] 196.285 MB
● fis-receiver [ ] 0 %
[1] [fork_mode] [||||| ] 65.773 MB
● www [ ] 0 %
[2] [fork_mode] [||||| ] 74.426 MB
● oc-server [ ] 0 %
[3] [fork_mode] [|||| ] 57.801 MB
● pm2-http-interface [ ] stopped
[4] [fork_mode] [ ] 0 B
● start-production
[5] [fork_mode]
최대 메모리 사용량 초과 자동 재시작
응용 프로그램을 원한다면 메모리 상한선을 초과한 후에 자동으로 다시 시작합니다.
--max-memory-restart
인자를 추가할 수 있습니다.(해당되는 구성 항목이 있음)pm2 start big-array.js --max-memory-restart 20M
업데이트
공식 문서:http://pm2.keymetrics.io/docs...
$ pm2 save #
$ npm install pm2 -g
$ pm2 update
pm2 + nginx
단지 nginx에 역 프록시 설정을 해서 직접 붙이는 것입니다.
upstream my_nodejs_upstream {
server 127.0.0.1:3001;
}
server {
listen 80;
server_name my_nodejs_server;
root /home/www/project_root;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_max_temp_file_size 0;
proxy_pass http://my_nodejs_upstream/;
proxy_redirect off;
proxy_read_timeout 240s;
}
}
공식 문서:http://pm2.keymetrics.io/docs...
온라인 모니터링 시스템
유료 서비스는 사용이 매우 간단하고 프로세스의 서비스 상황을 편리하게 감시할 수 있다.사용해 보셔도 됩니다. 주소는 여기 있습니다.
여기에 항목에서 시험적으로 사용한 캡처를 붙여 주세요.
pm2 프로그래밍 인터페이스
만약pm2의 프로세스 모니터링을 다른 자동화 프로세스와 통합시키려면pm2의 프로그래밍 인터페이스가 매우 유용하다.자세한 내용은 공식 문서를 참조하십시오.http://pm2.keymetrics.io/docs...
모듈 확장 시스템
pm2는 제3자 확장을 지원한다. 예를 들어 자주 사용하는log rotate 등이다.공식 문서를 참고할 수 있습니다.
뒤에 쓰다
pm2의 문서는 이미 잘 썼고 학습 원가가 매우 낮다. pm2를 사용하지 않은 친구들도 기본적으로 getting started의 예에 따라 프로젝트를 뛸 수 있기 때문에 글에서 많은 부분이 공식 문서를 직접 참고하는 것을 권장한다.
...
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Express + AWS S3 이미지 업로드하기웹 사이트 및 모바일 애플리케이션 등에서 원하는 양의 데이터를 저장하고 보호할 수 있다. 데이터에 대한 액세스를 최적화, 구조화 및 구성할 수 있는 관리 기능을 제공한다. AWS S3 에 저장된 객체에 대한 컨테이너...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.