Nodejs PM2 중국어 문서

15917 단어
PM2 는 node 프로 세 스 관리 도구 로 많은 node 응용 관리의 번 거 로 운 임 무 를 간소화 할 수 있 습 니 다. 예 를 들 어 성능 모니터링, 자동 재 부팅, 부하 균형 등 이 있 고 사용 이 매우 간단 합 니 다.PM2 에 대한 입문 적 인 소 개 는 기본적으로 PM2 의 상용 기능 과 배 치 를 포함한다.
PM2 설치
$ npm install pm2 -g

프로그램 시작
$ pm2 start app.js

PM2 업데이트
#      pm2
$ pm2 save #         
$ npm install pm2 -g
$ pm2 update

목록 소개
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 이다.그럼 pm2 로 바 꾸 면
    여기 --watch 인 자 를 사 용 했 습 니 다. express 응용 코드 가 바 뀌 었 을 때 pm2 가 서 비 스 를 다시 시작 하 는 데 도움 을 줄 것 입 니 다.
    pm2 start ./bin/www --watch
    

    입문 이 너무 간단 해서 할 말 이 없다.공식 문서 로 바로 가기:http://pm2.keymetrics.io/docs/usage/quick-start
    상용 명령
    시동 을 걸다
    매개 변수 설명:
  • --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...)。예 를 들 어 당신 이 사용 하 는 coffee script 으로 응용 프로그램 을 작성 합 니 다.

  • 전체 명령 행 매개 변수 목록: 주소
    pm2 start app.js --watch -i 2
    

    다시 시작
    pm2 restart app.js
    

    멈추다
    특정 응용 을 중지 합 니 다.먼저 pm2 list 을 통 해 응용 프로그램의 이름 (-- name 지정) 이나 프로 세 스 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_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] 을 통 해 자동 작 동 명령 을 생 성 합 니 다.(콘 솔 출력 보기)
  • 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
    

    모니터링 (모니터)
    현재 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
    

    상용 명령 일람
    #    General
    $ npm install pm2 -g            #    PM2
    $ pm2 start app.js              #   ,    ,         Start, Daemonize and auto-restart application (Node)
    $ pm2 start app.py              #   ,    ,    python     Start, Daemonize and auto-restart application (Python)
    $ pm2 start npm -- start        #   ,    ,    node     Start, Daemonize and auto-restart Node application
    
    #      (   node  ) Cluster Mode (Node.js only)
    $ pm2 start app.js -i 4         #       ,  4         Start 4 instances of application in cluster mode
                                    #   ,     ,             it will load balance network queries to each app
    $ pm2 reload all                # 0        Zero Second Downtime Reload
    $ pm2 scale [app-name] 10       #         10 Scale Cluster app to 10 process
    
    #      Scale Cluster app to 10 process
    $ pm2 list                      #      PM2      List all processes started with PM2
    $ pm2 monit                     #          cpu    Display memory and cpu usage of each app
    $ pm2 show [app-name]           #             Show all informations about application
    
    #      Log management
    $ pm2 logs                      #            Display logs of all apps
    $ pm2 logs [app-name]           #           Display logs for a specific app
    $ pm2 logs --json               # json    Logs in JSON format
    $ pm2 flush
    $ pm2 reloadLogs
    
    #        Process State Management
    $ pm2 start app.js --name="api" #           api。 Start application and name it "api"
    $ pm2 start app.js -- -a 34     #       ,   “-a 34”   。 Start app and pass option "-a 34" as argument
    $ pm2 start app.js --watch      #       ,        。Restart application on file change
    $ pm2 start script.sh           #     bash  。Start bash script
    $ pm2 start app.json            #    app.json        。Start all applications declared in app.json
    $ pm2 reset [app-name]          #        。Reset all counters
    $ pm2 stop all                  #       。Stop all apps
    $ pm2 stop 0                    #   id  0   。Stop process with id 0
    $ pm2 restart all               #       。Restart all apps
    $ pm2 gracefulReload all        #       ,          。Graceful reload all apps in cluster mode
    $ pm2 delete all                #       。Kill and delete all apps
    $ pm2 delete 0                  #   id 0   。Delete app with id 0
    
    #   /     Startup/Boot management
    $ pm2 startup                   #   init  ,         pm2。Detect init system, generate and configure pm2 boot on startup
    $ pm2 save                      #         。Save current process list
    $ pm2 resurrect                 #          。Restore previously save processes
    $ pm2 unstartup                 #          。Disable and remove startup system
    $ pm2 update                    #     ,  PM2     。Save processes, kill PM2 and restore processes
    $ pm2 generate                  #     json    。Generate a sample json configuration file
    
    #    Deployment
    $ pm2 deploy app.json prod setup    #   “    ”     。 Setup "prod" remote server
    $ pm2 deploy app.json prod          #   “    ”     。 Update "prod" remote server
    $ pm2 deploy app.json prod revert 2 #  “    ”       2。Revert "prod" remote server by 2
    
    #      Module system
    $ pm2 module:generate [name]    #      [name]     。Generate sample module with name [name]
    $ pm2 install pm2-logrotate     #     (         )。Install module (here a log rotation system)
    $ pm2 uninstall pm2-logrotate   #     。Uninstall module
    $ pm2 publish                   #     ,git push npm  。Increment version, git push and npm publish
    

    프로 세 스 관리
    실행 중인 프로그램 목록
    $ pm2 list
    

    응용 프로 세 스 를 간단하게 관리 합 니 다.
    $ pm2 stop     
    $ pm2 restart  
    $ pm2 delete    
    

    CPU / 프로 세 스 모니터링
    모든 시작 프로 세 스 모니터링:
    $ pm2 monit
    

    로그 시설
    지정 한 프로 세 스 나 모든 프로 세 스 의 로 그 를 실시 간 으로 표시 합 니 다.표준, 원본, JSON, 형식 출력 을 제공 합 니 다.
    $ pm2 logs ['all'|app_name|app_id] [--json] [--format] [--raw]`
    

    예:
    $ pm2 logs APP-NAME       # Display APP-NAME logs
    $ pm2 logs --json         # JSON output
    $ pm2 logs --format       # Formated output
    
    $ pm2 flush               # Flush all logs
    $ pm2 reloadLogs          # Reload all logs
    

    시작 스 크 립 트 생 성
    /* PM2           ,              PM2       。
      init  , :systemd(Ubuntu 16,CentOS,Arch),upstart(Ubuntu 14/12),launchd(MacOSx,Darwin),rc.d(FreeBSD)。
        init  +            PM2  。 Auto detect init system + generate and setup PM2 boot at server startup */
    $ pm2 startup
    
    #         . Manually specify the startup system
    #    :systemd,upstart,launchd,rcd。
    $ pm2 startup [platform]
    
    #             PM2  。Disable and remove PM2 boot at server startup
    $ pm2 unstartup
    

    다시 시작 할 때 프로 세 스 목록 저장 / 동결:
    $ pm2 save
    

    모듈 시스템 모듈 시스템
    PM2 는 간단 하고 강력 한 모듈 시스템 을 삽입 했다.설치 모듈 은 간단 합 니 다:
    $ pm2 install 
    

    좋은 웹페이지 즐겨찾기