最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用pm2部署node生產(chǎn)環(huán)境的方法步驟

 更新時間:2019年03月09日 09:48:44   作者:keywords  
這篇文章主要介紹了使用pm2部署node生產(chǎn)環(huán)境的方法步驟,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

一、PM2是什么

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

二、為森么要使用pm2

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

pm2常用命令

啟動服務(wù)pm2 start <script_file|config_file> [options] 啟動指定應(yīng)用

pm2 start app.js        //啟動app.js應(yīng)用
pm2 start app.js --name app  //啟動應(yīng)用并設(shè)置name
pm2 start app.sh        //腳本啟動

pm2 start app.js --watch  //監(jiān)聽模式啟動,當文件發(fā)生變化,自動重啟

//max 表示PM2將自動檢測可用CPU的數(shù)量并運行盡可能多的進程
//max可以自定義,如果是4核CPU,設(shè)置為2則占用2個
pm2 start app.js -i max //啟用群集模式(自動負載均衡)

pm2-dev start ... // 開發(fā)模式啟動,即不啟用后臺運行

查看啟動列表pm2 list

顯示應(yīng)用程序詳細信息pm2 show <appName> [options] 顯示指定應(yīng)用詳情

pm2 show [Name]   //根據(jù)name查看
pm2 show [ID]    //根據(jù)id查看

停止指定應(yīng)用pm2 stop <appName> [options] 停止指定應(yīng)用

pm2 stop all        //停止所有應(yīng)用
pm2 stop [AppName]    //根據(jù)應(yīng)用名停止指定應(yīng)用
pm2 stop [ID]       //根據(jù)應(yīng)用id停止指定應(yīng)用

重啟應(yīng)用pm2 reload|restart <appName> [options] 重啟指定應(yīng)用

pm2 restart app.js    //同時殺死并重啟所有進程,短時間內(nèi)服務(wù)不可用,生成環(huán)境慎用
pm2 reload app.js    //重新啟動所有進程,0秒重啟,始終保持至少一個進程在運行
pm2 gracefulReload all  //以群集模式重新加載所有應(yīng)用程序

啟動靜態(tài)服務(wù)器pm2 serve ./dist 8080將目錄dist作為靜態(tài)服務(wù)器根目錄,端口為8080

刪除應(yīng)用pm2 delete <appName> [options] 刪除指定應(yīng)用;如果修改了應(yīng)用配置行為,需要先刪除應(yīng)用,重新啟動后方才會生效,如修改腳本入口文件;

pm2 delete all        //關(guān)閉并刪除應(yīng)用
pm2 delete [AppName]    //根據(jù)應(yīng)用名關(guān)閉并刪除應(yīng)用
pm2 delete [ID]      //根據(jù)應(yīng)用ID關(guān)閉并刪除應(yīng)用

pm2 kill 殺掉pm2管理的所有進程;

pm2 logs <appName> 查看指定應(yīng)用的日志,即標準輸出和標準錯誤

pm2 logs      //查看所有應(yīng)用日志
pm2 logs [Name]  //根據(jù)指定應(yīng)用名查看應(yīng)用日志
pm2 logs [ID]   //根據(jù)指定應(yīng)用ID查看應(yīng)用日志

pm2 monit 監(jiān)控各個應(yīng)用進程cpu和memory使用情況;

PM2配置方式

命令生產(chǎn)默認示例配置文件pm2 ecosystem或pm2 init,運行默認會生成ecosystem.config.js配置文件

module.exports = {
 apps: [
  {
   name: 'back-Api',   //應(yīng)用名
   script: './server/start.js',  //應(yīng)用文件位置
   env: {
    PM2_SERVE_PATH: "./apidoc",  //靜態(tài)服務(wù)路徑
    PM2_SERVE_PORT: 8080,  //靜態(tài)服務(wù)器訪問端口
    NODE_ENV: 'development' //啟動默認模式
   },
   env_production : {
    NODE_ENV: 'production' //使用production模式 pm2 start ecosystem.config.js --env production
   },
   instances:"max",     //將應(yīng)用程序分布在所有CPU核心上,可以是整數(shù)或負數(shù)
   instance_var: "INSTANCE_ID",
   exec_mode: "cluster",
   watch:[
    "server",
   ], //監(jiān)聽模式,不能單純的設(shè)置為true,易導(dǎo)致無限重啟,因為日志文件在變化,需要排除對其的監(jiān)聽
   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',    //服務(wù)器文件路徑
    "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"
    ],//需要監(jiān)控的目錄
    "error_file":"./logs/err.log",//錯誤輸出日志
    "out_file":"./logs/out.log", //日志
    "log_date_format":"YYYY-MM-DD HH:mm Z" //日期格式
    }]
  }

pm2常用配置項解析

1. apps:json結(jié)構(gòu),apps是一個數(shù)組,每一個數(shù)組成員就是對應(yīng)一個pm2中運行的應(yīng)用

2. name:應(yīng)用程序名稱"app"

3. cwd:應(yīng)用程序所在的目錄"./"

4. script:應(yīng)用程序的腳本路徑"./"

5. log_date_format: 日志文件名輸出日期格式"YYYY-MM-DD HH:mm Z"

6. error_file:自定義應(yīng)用程序的錯誤日志文件"./logs/app-err.log",

7. out_file:自定義應(yīng)用程序日志文件"./logs/app-out.log"

8. instances: 應(yīng)用啟動實例個數(shù),僅在cluster模式有效 默認為fork;或者 max

9. min_uptime:最小運行時間,這里設(shè)置的是60s即如果應(yīng)用程序在60s內(nèi)退出,pm2會認為程序異常退出,此時觸發(fā)重啟max_restarts設(shè)置數(shù)量

10. max_restarts:設(shè)置應(yīng)用程序異常退出重啟的次數(shù),默認15次(從0開始計數(shù))

11. cron_restart:定時啟動,解決重啟能解決的問題

12. watch:是否啟用監(jiān)控模式,默認是false。如果設(shè)置成true,當應(yīng)用程序變動時,pm2會自動重載。這里也可以設(shè)置你要監(jiān)控的文件。

13. "ignore_watch": [                           // 不用監(jiān)聽的文件
            "node_modules",
            "logs"
        ],
13. merge_logs:// 設(shè)置追加日志而不是新建日志

14. exec_interpreter:應(yīng)用程序的腳本類型,這里使用的shell,默認是nodejs

15. exec_mode:應(yīng)用程序啟動模式,這里設(shè)置的是cluster_mode(集群),默認是fork

16. autorestart:啟用/禁用應(yīng)用程序崩潰或退出時自動重啟,默認為true, 發(fā)生異常的情況下自動重啟

17. vizion:啟用/禁用vizion特性(版本控制)

18. "args": "", // 傳遞給腳本的參數(shù)

19. env: {
        PM2_SERVE_PATH: "./apidoc",    //靜態(tài)服務(wù)路徑
        PM2_SERVE_PORT: 8080,   //靜態(tài)服務(wù)器訪問端口
        NODE_ENV: 'development' //啟動默認模式
      },

20. env_production : {
        NODE_ENV: 'production'  //使用production模式 pm2 start ecosystem.config.js --env production
      },

pm2配合log4js處理日志

1、pm2啟動時通常會發(fā)現(xiàn)log4js記錄不到日志信息;

2、解決方案,安裝pm2的pm2-intercom進程間通信模塊

3、在log4js的配置文件logger.js里添加如下命令:

pm2: true, 
pm2InstanceVar: 'INSTANCE_ID' 

4、pm2配置文件中添加"instance_var": "INSTANCE_ID", // 添加這一行 字段

5、發(fā)現(xiàn)如果沒有設(shè)置群集模式"exec_mode": "cluster",也會記錄不到;

其他

log4js日志配置使用詳情Koa日志中間件封裝開發(fā)(log4js)

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • node.js發(fā)送郵件email的方法詳解

    node.js發(fā)送郵件email的方法詳解

    這篇文章主要介紹了node.js發(fā)送郵件email的方法,結(jié)合實例形式詳細分析了node.js發(fā)送郵件的原理、操作步驟、注意事項及常見問題解決方法,需要的朋友可以參考下
    2017-01-01
  • NodeJS連接MongoDB數(shù)據(jù)庫時報錯的快速解決方法

    NodeJS連接MongoDB數(shù)據(jù)庫時報錯的快速解決方法

    下面小編就為大家?guī)硪黄狽odeJS連接MongoDB數(shù)據(jù)庫時報錯的快速解決方法。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考
    2016-05-05
  • Nodejs學習筆記之NET模塊

    Nodejs學習筆記之NET模塊

    之前兩篇文章基本上都是給我們介紹的nodejs的理論基礎(chǔ),今天我們來點干貨,先從NET模塊開始講起吧。
    2015-01-01
  • Node.js控制器Controller使用教程

    Node.js控制器Controller使用教程

    這篇文章主要介紹了Node.js控制器Controller使用教程,一個控制器的目的是接收應(yīng)用程序的特定請求。路由機制控制哪個控制器接收哪些請求。通常,每個控制器有一個以上的路由,不同的路由可以執(zhí)行不同的動作
    2023-04-04
  • nodejs實現(xiàn)用戶登錄路由功能

    nodejs實現(xiàn)用戶登錄路由功能

    這篇文章主要介紹了nodejs中實現(xiàn)用戶登錄路由功能,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-05-05
  • 用nodejs搭建websocket服務(wù)器

    用nodejs搭建websocket服務(wù)器

    這篇文章主要介紹了用nodejs搭建websocket服務(wù)器,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • node.js安裝及環(huán)境配置超詳細步驟講解(Windows系統(tǒng)安裝包方式)

    node.js安裝及環(huán)境配置超詳細步驟講解(Windows系統(tǒng)安裝包方式)

    這篇文章主要介紹了node.js安裝及環(huán)境配置超詳細教程(Windows系統(tǒng)安裝包方式),本文分步驟通過圖文并茂的形式給大家介紹的非常詳細,需要的朋友可以參考下
    2023-02-02
  • windows下更新npm和node的方法

    windows下更新npm和node的方法

    本篇文章主要介紹了windows下更新npm和node的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • Node.js深入分析Koa源碼

    Node.js深入分析Koa源碼

    本文主要從源碼的角度來講述 Koa,尤其是其中間件系統(tǒng)是如何實現(xiàn)的。跟 Express 相比,Koa 的源碼異常簡潔,Express 因為把路由相關(guān)的代碼嵌入到了主要邏輯中,因此讀 Express 的源碼可能長時間不得要領(lǐng),而直接讀 Koa 的源碼幾乎沒有什么障礙
    2022-08-08
  • Node.js中參數(shù)傳遞的兩種方式詳解

    Node.js中參數(shù)傳遞的兩種方式詳解

    這篇文章主要為大家介紹了Node.js中參數(shù)傳遞的兩種方式:GET方式和POST方式,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2022-04-04

最新評論

开封县| 青浦区| 天柱县| 伽师县| 阜阳市| 金坛市| 鄂伦春自治旗| 永靖县| 壤塘县| 游戏| 三河市| 黄浦区| 奉新县| 息烽县| 迁西县| 武山县| 毕节市| 湄潭县| 武功县| 仁布县| 关岭| 阿坝| 阳西县| 宁国市| 青海省| 石家庄市| 潮州市| 荆门市| 云和县| 汾西县| 巩留县| 四平市| 昌吉市| 津南区| 延边| 临潭县| 石家庄市| 长宁县| 河源市| 莎车县| 瑞丽市|