亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > JS > 正文

使用pm2部署node生產環境的方法步驟

2024-05-06 16:48:53
字體:
來源:轉載
供稿:網友

一、PM2是什么

  • 是可以用于生產環境的Nodejs的進程管理工具,并且它內置一個負載均衡。它不僅可以保證服務不會中斷一直在線,并且提供0秒reload功能,還有其他一系列進程管理、監控功能。并且使用起來非常簡單。
  • 嗯嗯,最好的用處就是監控我們的生產環境下的node程序運行狀態,讓它給我們日以繼日的處于工作狀態。
  • pm2官方文檔 

二、為森么要使用pm2

  • 原始社會的我們開發node服務端程序一般過程:
    • 編寫好node程序app.js,運行node app.js;或者寫入script使用npm運行;打開瀏覽器訪問;
    • 好像需要修改內容,瀏覽器對修改的內容沒有顯示出來?->node app.js->再次運行;
    • 瀏覽器忽然訪問不到服務,好像出錯啦?重啟下->node app.js->再次運行;
    • 哎呀開了好多控制臺窗口,一不小心關閉了,服務又訪問不到了,繼續打開控制臺->node app.js->再次運行;
  • 好崩潰!好像有個工具nodemon;安裝使用nodemon app.js;哇,可以自動監聽文件修改變化自動重啟,但是關閉控制臺服務還是會被摧毀。
  • 通過這個很常用的場景,我們了解到要避免這些麻煩一個服務器至少需要有:后臺運行和自動重啟,這兩個能力。
  • 再來看看使用pm2可擁有的能力:
    • 日志管理;兩種日志,pm2系統日志與管理的進程日志,默認會把進程的控制臺輸出記錄到日志中;
    • 負載均衡:PM2可以通過創建共享同一服務器端口的多個子進程來擴展您的應用程序。這樣做還允許以零秒停機時間重新啟動應用程序。
    • 終端監控:可以在終端中監控應用程序并檢查應用程序運行狀況(CPU使用率,使用的內存,請求/分鐘等)。
    • SSH部署:自動部署,避免逐個在所有服務器中進行ssh。
    • 靜態服務:支持靜態服務器功能
    • 支持開發調試模式,非后臺運行,pm2-dev start <appName>;
    • 。。。。。太過強大!

pm2常用命令

啟動服務pm2 start <script_file|config_file> [options] 啟動指定應用

pm2 start app.js        //啟動app.js應用pm2 start app.js --name app  //啟動應用并設置namepm2 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)

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
在线免费观看羞羞视频一区二区| 国产欧美精品va在线观看| 成人性生交大片免费看视频直播| 国外成人性视频| 91日本在线视频| 国产精品 欧美在线| 人妖精品videosex性欧美| 国产精品a久久久久久| 国产69精品久久久久9999| 久久九九有精品国产23| 国产一区二区三区在线观看视频| 亚洲一区二区在线播放| 亚洲国产精彩中文乱码av| 青青草成人在线| 成人精品一区二区三区电影黑人| 久久久久久久国产精品视频| 亚洲精品久久视频| 欧美亚洲成人网| 国产欧美日韩高清| 亚洲欧美日本另类| 成人免费网站在线看| 精品国产一区二区三区在线观看| 色爱av美腿丝袜综合粉嫩av| 久久成人精品一区二区三区| 日韩av在线精品| 高跟丝袜欧美一区| 国产视频综合在线| 91九色国产社区在线观看| 国产精品夜色7777狼人| 久久人人爽人人爽人人片亚洲| 久久韩剧网电视剧| 亚洲精品xxx| 欧美激情视频一区二区| 国产91精品久久久| 亚洲精品永久免费| 国产精品日韩专区| 国产欧美精品日韩| 亚洲黄色在线观看| 黑人狂躁日本妞一区二区三区| 欧美性精品220| 日韩精品中文字幕在线播放| 亚洲a一级视频| 亚洲免费电影一区| 97国产精品久久| 欧美—级a级欧美特级ar全黄| 97国产精品久久| 亚洲欧美国产日韩中文字幕| 欧美成人午夜免费视在线看片| 91久久国产精品91久久性色| 亚洲视频axxx| 国产精品极品美女在线观看免费| 91欧美精品成人综合在线观看| 欧美在线亚洲在线| 成人激情视频免费在线| 久久精品国产亚洲精品2020| 国产精品极品在线| 5566日本婷婷色中文字幕97| 亚洲一区二区三区在线视频| 日韩禁在线播放| 日韩精品免费在线视频| 国产美女高潮久久白浆| 97精品视频在线观看| 91探花福利精品国产自产在线| 国产精品久久久久久久久| 一区二区三区四区在线观看视频| 国产午夜精品美女视频明星a级| 91久久久久久久久久久久久| 久久久久中文字幕2018| 日韩免费在线观看视频| 欧美在线视频网站| 亚洲精品国产精品自产a区红杏吧| 亚洲美女性生活视频| 久久99精品久久久久久青青91| 精品久久久久久久久中文字幕| 日本欧美在线视频| 欧美精品一区三区| 亚洲女人被黑人巨大进入| 欧美极品少妇全裸体| 97欧美精品一区二区三区| 免费97视频在线精品国自产拍| 欧美激情视频免费观看| 欧美专区日韩视频| 亚洲人成在线观| 亚洲а∨天堂久久精品喷水| 大桥未久av一区二区三区| 欧美色图在线视频| 亚洲性夜色噜噜噜7777| 成人免费福利在线| 91精品在线看| 欧美午夜精品伦理| 538国产精品一区二区免费视频| 久久夜色撩人精品| 亚洲欧美国产精品| 亚洲丁香婷深爱综合| 国产中文字幕亚洲| 日本精品视频在线| 搡老女人一区二区三区视频tv| 欧美日韩国产中文精品字幕自在自线| 亚洲最新av在线网站| 久久久999精品视频| 国产精品视频一区二区高潮| 亚洲大胆美女视频| 欧美一区深夜视频| 欧美日韩在线视频首页| 亚洲精品电影在线| 国产精品91视频| 日韩女优人人人人射在线视频| 国产97在线|亚洲| 成人免费大片黄在线播放| 亚洲男子天堂网| 欧美成人激情图片网| xvideos亚洲| 91精品国产综合久久香蕉| 国产主播在线一区| 久久影视免费观看| 国产精品露脸av在线| 精品在线欧美视频| 成人黄色激情网| 在线观看欧美www| 精品国产电影一区| 亚洲一区第一页| 国产成人av在线播放| 日韩精品www| 色伦专区97中文字幕| 日韩在线小视频| 久久国产加勒比精品无码| 久久免费观看视频| 一本色道久久88精品综合| 亚洲视频视频在线| 精品色蜜蜜精品视频在线观看| 免费成人高清视频| 亚洲影院色在线观看免费| 欧美激情在线狂野欧美精品| 91精品国产综合久久香蕉| 国产成人黄色av| 欧美在线视频观看| 伊人久久久久久久久久久久久| 在线日韩中文字幕| 91亚洲精品久久久久久久久久久久| 亚洲97在线观看| 日韩欧美在线字幕| 91精品国产综合久久香蕉922| 丝袜美腿精品国产二区| 久久久精品电影| 日韩免费观看在线观看| 欧美黑人国产人伦爽爽爽| 亚洲精品国产美女| 日本久久亚洲电影| 国产成人jvid在线播放| 日韩欧美高清在线视频| 国产成人免费av电影| 欧美另类暴力丝袜| 久久免费视频在线观看| 中文字幕国产亚洲| 日韩精品久久久久久久玫瑰园| 久久全国免费视频| 国产97在线|日韩| 国产精品视频大全| 亚洲成人久久电影| 欧美性感美女h网站在线观看免费| 亚洲国产成人久久综合| 亚洲少妇中文在线| 成人午夜小视频| 亚洲欧洲在线视频|