PM2 유틸리티 시작 설명서

11571 단어 node.jspm2
간단한 소개
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 파일로 처리하기 때문에 주석을 추가하거나 코드를 작성할 수 있어 동적 조정 설정에 좋다.
  • 시작할 때 설정 파일을 지정하면 명령줄 파라미터가 무시됩니다.(예를 들어 --env)
  • 예.
    간단한 예를 들어 전체 설정 설명은 공식 문서를 참고하십시오.
    {
      "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_devenv_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]를 통해 전원 켜기 자동 시작 명령을 생성합니다.(콘솔 출력을 확인하십시오.)
  • 단계 2에서 생성한 명령을 컨트롤러에 붙여서 진행한다.

  • 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의 예에 따라 프로젝트를 뛸 수 있기 때문에 글에서 많은 부분이 공식 문서를 직접 참고하는 것을 권장한다.
    ...

    좋은 웹페이지 즐겨찾기