pm2的配置應用 原

一、簡介

pm2是一個帶有負載均衡功能的應用進程管理器,類似有Supervisor,forever,daemontools。

 

二、安裝

Linux Binaries下載地址:https://nodejs.org/dist

cd /usr/local/src

#wget https://nodejs.org/dist/v4.2.4/node-v4.2.4-linux-x86.tar.gz

#https://nodejs.org/dist/v4.2.4/node-v4.2.4-linux-x86.tar.xz

#

wget https://nodejs.org/dist/v4.2.4/node-v4.2.4-linux-x64.tar.gz

 

#https://nodejs.org/dist/v4.2.4/node-v4.2.4-linux-x64.tar.xz

#https://nodejs.org/dist/v8.7.0/node-v8.7.0-linux-x64.tar.gz

 

tar xzf node-v4.2.4-linux-x64.tar.gz

cp node-v4.2.4-linux-x64/bin/node /usr/local/bin/

cp -R node-v4.2.4-linux-x64/lib/node_modules /usr/local/lib/

ln -s /usr/local/lib/node_modules/npm/bin/npm-cli.js /usr/local/bin/npm

 

#tar xzf node-v8.7.0-linux-x64.tar.gz

#cp node-v8.7.0-linux-x64/bin/node /usr/local/bin/

#cp -R node-v8.7.0-linux-x64/lib/node_modules /usr/local/lib/

#ln -s /usr/local/lib/node_modules/npm/bin/npm-cli.js /usr/local/bin/npm

 

npm install pm2@latest -g #安裝最新版本pm2模塊

######

PS:注意軟件位數與系統位數的對應

PS1:安裝模塊時若卡住,可指定國內鏡像服務器

npm install pm2@latest -g --registry=http://registry.npm.taobao.org

#取消ssl驗證

npm config set strict-ssl false

PS2: 如果你的主機無法連接公網,先找到能連公網的主機安裝上面的方法安裝pm2,然後拷貝到你要安裝的主機。拷貝如下目錄:

  1. /usr/local/bin/node
  2. /usr/local/lib/node_modules

之後創建相關軟連接

 

三、PM2常用命令

假設你現在已經寫好了一個app.js的文件,需要啓動,你可以使用pm2進行管理

1. 啓動

  1. # pm2 start app.js
  2. # pm2 start app.js --name my-api #my-api爲PM2進程名稱
  3. # pm2 start app.js -i 0 #根據CPU核數啓動進程個數
  4. # pm2 start app.js --watch    #實時監控app.js的方式啓動,當app.js文件有變動時,pm2會自動reload

2. 查看進程

  1. # pm2 list
  2. # pm2 show 0 或者 # pm2 info 0  #查看進程詳細信息,0爲PM2進程id

3. 監控

  1. # pm2 monit

4. 停止

  1. # pm2 stop all  #停止PM2列表中所有的進程
  2. # pm2 stop 0    #停止PM2列表中進程爲0的進程

5. 重載

  1. # pm2 reload all    #重載PM2列表中所有的進程
  2. # pm2 reload 0     #重載PM2列表中進程爲0的進程

6. 重啓

  1. # pm2 restart all     #重啓PM2列表中所有的進程
  2. # pm2 restart 0      #重啓PM2列表中進程爲0的進程

7. 刪除PM2進程

  1. # pm2 delete 0     #刪除PM2列表中進程爲0的進程
  2. # pm2 delete all   #刪除PM2列表中所有的進程

8. 日誌操作

  1. # pm2 logs [--raw]   #Display all processes logs in streaming
  2. # pm2 flush              #Empty all log file
  3. # pm2 reloadLogs    #Reload all logs

9. 升級PM2

  1. # npm install pm2@lastest -g   #安裝最新的PM2版本
  2. # pm2 update pm2                   #升級pm2

10. 開機啓動

    1. #pm2 startup

    2. #service pm2-root start #CentOS6/RedHat6

    3. #systemd restart pm2-root.service #CentOS7/RedHat7

11. 更多命令參數請查看幫助

  1. # pm2 --help

 

四、PM2目錄結構

默認的目錄是:當前用於的家目錄下的.pm2目錄(此目錄可以自定義,請參考:五、自定義啓動文件),詳細信息如下:

  1. $HOME/.pm2 #will contain all PM2 related files
  2. $HOME/.pm2/logs #will contain all applications logs
  3. $HOME/.pm2/pids #will contain all applications pids
  4. $HOME/.pm2/pm2.log #PM2 logs
  5. $HOME/.pm2/pm2.pid #PM2 pid
  6. $HOME/.pm2/rpc.sock #Socket file for remote commands
  7. $HOME/.pm2/pub.sock #Socket file for publishable events
  8. $HOME/.pm2/conf.js #PM2 Configuration

 

五、自定義啓動文件

創建一個test.json的示例文件,格式如下:

{

  "apps":

    {

      "name": "test",

      "cwd": "/data/wwwroot/nodejs",

      "script": "./test.sh",

      "exec_interpreter": "bash",

      "min_uptime": "60s",

      "max_restarts": 30,

      "exec_mode" : "cluster_mode",

      "error_file" : "./test-err.log",

      "out_file": "./test-out.log",

      "pid_file": "./test.pid"

      "watch": false

    }

}

說明:

apps:json結構,apps是一個數組,每一個數組成員就是對應一個pm2中運行的應用

name:應用程序的名稱

cwd:應用程序所在的目錄

script:應用程序的腳本路徑

exec_interpreter:應用程序的腳本類型,這裏使用的shell,默認是nodejs

min_uptime:最小運行時間,這裏設置的是60s即如果應用程序在60s內退出,pm2會認爲程序異常退出,此時觸發重啓max_restarts設置數量

max_restarts:設置應用程序異常退出重啓的次數,默認15次(從0開始計數)

exec_mode:應用程序啓動模式,這裏設置的是cluster_mode(集羣),默認是fork

error_file:自定義應用程序的錯誤日誌文件

out_file:自定義應用程序日誌文件

pid_file:自定義應用程序的pid文件

watch:是否啓用監控模式,默認是false。如果設置成true,當應用程序變動時,pm2會自動重載。這裏也可以設置你要監控的文件。

詳細參數列表:見附件八

 

六、實例

以上面的test.json爲例

# cat > /data/wwwroot/nodejs/test.sh << EOF

#!/bin/bash

while :

do

    echo "Test" >> 1.log

    sleep 5

done

EOF

# chmod +x test.sh       #添加執行權限

# pm2 start test.json    #啓動,如下圖:

# pm2 list    #查看pm2進程,如下圖:

以rabbitmq爲例,rabbit.json格式如下:

{

"apps":

{

"name": "rabbitmq",

"cwd": "/usr/local/rabbitmq-3.6.6/sbin",

"script": "./rabbitmq-server",

"exec_interpreter": "bash",

"min_uptime": "60s",

"max_restarts": 30,

"watch": true

}

}

# pm2 start rabbitmq.json

# pm2 list

 

七、備註

其他可參數見官網:http://pm2.keymetrics.io

 

八、附件

http://pm2.keymetrics.io/docs/usage/application-declaration/

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章