您好,登錄后才能下訂單哦!
一、PM2是什么
二、為森么要使用pm2
pm2常用命令
啟動服務pm2 start <script_file|config_file> [options] 啟動指定應用
pm2 start app.js //啟動app.js應用 pm2 start app.js --name app //啟動應用并設置name pm2 start app.sh //腳本啟動 pm2 start app.js --watch //監聽模式啟動,當文件發生變化,自動重啟 //max 表示PM2將自動檢測可用CPU的數量并運行盡可能多的進程 //max可以自定義,如果是4核CPU,設置為2則占用2個 pm2 start app.js -i max //啟用群集模式(自動負載均衡) pm2-dev start ... // 開發模式啟動,即不啟用后臺運行
查看啟動列表pm2 list
顯示應用程序詳細信息pm2 show <appName> [options] 顯示指定應用詳情
pm2 show [Name] //根據name查看 pm2 show [ID] //根據id查看
停止指定應用pm2 stop <appName> [options] 停止指定應用
pm2 stop all //停止所有應用 pm2 stop [AppName] //根據應用名停止指定應用 pm2 stop [ID] //根據應用id停止指定應用
重啟應用pm2 reload|restart <appName> [options] 重啟指定應用
pm2 restart app.js //同時殺死并重啟所有進程,短時間內服務不可用,生成環境慎用 pm2 reload app.js //重新啟動所有進程,0秒重啟,始終保持至少一個進程在運行 pm2 gracefulReload all //以群集模式重新加載所有應用程序
啟動靜態服務器pm2 serve ./dist 8080將目錄dist作為靜態服務器根目錄,端口為8080
刪除應用pm2 delete <appName> [options] 刪除指定應用;如果修改了應用配置行為,需要先刪除應用,重新啟動后方才會生效,如修改腳本入口文件;
pm2 delete all //關閉并刪除應用 pm2 delete [AppName] //根據應用名關閉并刪除應用 pm2 delete [ID] //根據應用ID關閉并刪除應用
pm2 kill 殺掉pm2管理的所有進程;
pm2 logs <appName> 查看指定應用的日志,即標準輸出和標準錯誤
pm2 logs //查看所有應用日志 pm2 logs [Name] //根據指定應用名查看應用日志 pm2 logs [ID] //根據指定應用ID查看應用日志
pm2 monit 監控各個應用進程cpu和memory使用情況;
PM2配置方式
命令生產默認示例配置文件pm2 ecosystem或pm2 init,運行默認會生成ecosystem.config.js配置文件
module.exports = { apps: [ { name: 'back-Api', //應用名 script: './server/start.js', //應用文件位置 env: { PM2_SERVE_PATH: "./apidoc", //靜態服務路徑 PM2_SERVE_PORT: 8080, //靜態服務器訪問端口 NODE_ENV: 'development' //啟動默認模式 }, env_production : { NODE_ENV: 'production' //使用production模式 pm2 start ecosystem.config.js --env production }, instances:"max", //將應用程序分布在所有CPU核心上,可以是整數或負數 instance_var: "INSTANCE_ID", exec_mode: "cluster", watch:[ "server", ], //監聽模式,不能單純的設置為true,易導致無限重啟,因為日志文件在變化,需要排除對其的監聽 merge_logs: true, //集群情況下,可以合并日志 } ], deploy: { production : { user: 'node', //ssh 用戶 host: '212.83.163.1', //ssh 地址 ref: 'origin/master', //GIT遠程/分支 repo: 'git@github.com:repo.git', //git地址 path: '/var/www/production', //服務器文件路徑 "post-deploy": 'npm install && pm2 reload ecosystem.config.js --env production' //部署后的動作 } } };
自定義json配置文件如:processes.json;啟動pm2 start processes.json
{ "apps": [{ "name": "app", //名稱 "script": "./", //程序入口 "cwd": "./", //根目錄 "watch":[ "views" ],//需要監控的目錄 "error_file":"./logs/err.log",//錯誤輸出日志 "out_file":"./logs/out.log", //日志 "log_date_format":"YYYY-MM-DD HH:mm Z" //日期格式 }] }
pm2常用配置項解析
1. apps:json結構,apps是一個數組,每一個數組成員就是對應一個pm2中運行的應用
2. name:應用程序名稱"app"
3. cwd:應用程序所在的目錄"./"
4. script:應用程序的腳本路徑"./"
5. log_date_format: 日志文件名輸出日期格式"YYYY-MM-DD HH:mm Z"
6. error_file:自定義應用程序的錯誤日志文件"./logs/app-err.log",
7. out_file:自定義應用程序日志文件"./logs/app-out.log"
8. instances: 應用啟動實例個數,僅在cluster模式有效 默認為fork;或者 max
9. min_uptime:最小運行時間,這里設置的是60s即如果應用程序在60s內退出,pm2會認為程序異常退出,此時觸發重啟max_restarts設置數量
10. max_restarts:設置應用程序異常退出重啟的次數,默認15次(從0開始計數)
11. cron_restart:定時啟動,解決重啟能解決的問題
12. watch:是否啟用監控模式,默認是false。如果設置成true,當應用程序變動時,pm2會自動重載。這里也可以設置你要監控的文件。
13. "ignore_watch": [ // 不用監聽的文件
"node_modules",
"logs"
],
13. merge_logs:// 設置追加日志而不是新建日志
14. exec_interpreter:應用程序的腳本類型,這里使用的shell,默認是nodejs
15. exec_mode:應用程序啟動模式,這里設置的是cluster_mode(集群),默認是fork
16. autorestart:啟用/禁用應用程序崩潰或退出時自動重啟,默認為true, 發生異常的情況下自動重啟
17. vizion:啟用/禁用vizion特性(版本控制)
18. "args": "", // 傳遞給腳本的參數
19. env: {
PM2_SERVE_PATH: "./apidoc", //靜態服務路徑
PM2_SERVE_PORT: 8080, //靜態服務器訪問端口
NODE_ENV: 'development' //啟動默認模式
},
20. env_production : {
NODE_ENV: 'production' //使用production模式 pm2 start ecosystem.config.js --env production
},
pm2配合log4js處理日志
1、pm2啟動時通常會發現log4js記錄不到日志信息;
2、解決方案,安裝pm2的pm2-intercom進程間通信模塊
3、在log4js的配置文件logger.js里添加如下命令:
pm2: true, pm2InstanceVar: 'INSTANCE_ID'
4、pm2配置文件中添加"instance_var": "INSTANCE_ID", // 添加這一行 字段
5、發現如果沒有設置群集模式"exec_mode": "cluster",也會記錄不到;
其他
log4js日志配置使用詳情Koa日志中間件封裝開發(log4js)
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。