天天看點

PM2基本指令守護程序熱啟動VUE或Express等項目

PM2是node程序管理工具,可以利用它來簡化很多node應用管理的繁瑣任務,如性能監控、自動重新開機、負載均衡等,而且使用非常簡單。

首先了解基本指令,靈活運用

PM2安裝

npm install pm2 -g
//或
yarn global add pm2           

啟動

pm2 start app.js                //啟動app.js應用
pm2 start app.js --name demo    //啟動應用并設定name
pm2 start app.sh                //腳本啟動           

停止

pm2 stop all              //停止所有應用
pm2 stop [AppName]        //根據應用名停止指定應用
pm2 stop [ID]            //根據應用id停止指定應用           

删除

pm2 delete all              //關閉并删除應用
pm2 delete [AppName]        //根據應用名關閉并删除應用
pm2 delete [ID]            //根據應用ID關閉并删除應用           

建立開機自啟動

pm2 startup           

更新PM2

pm2 updatePM2
pm2 update           

監聽模式

pm2 start app.js --watch    //當檔案發生變化,自動重新開機           

靜态伺服器

pm2 serve ./dist 9090        //将目錄dist作為靜态伺服器根目錄,端口為9090           

啟用群集模式(自動負載均衡)

//max 表示PM2将自動檢測可用CPU的數量并運作盡可能多的程序
//max可以自定義,如果是4核CPU,設定為2者占用2個
pm2 start app.js -i max           

重新啟動

pm2 restart app.js   //同時殺死并重新開機所有程序。短時間内服務不可用。生成環境推薦使用reload           

0秒停機重新加載

pm2 reload app.js        //重新啟動所有程序,始終保持至少一個程序在運作
pm2 gracefulReload all  //優雅地以群集模式重新加載所有應用程式           

檢視啟動清單

pm2 list           

檢視每個應用程式占用情況

pm2 monit           

顯示應用程式所有資訊 

pm2 show [Name]      //根據name檢視
pm2 show [ID]        //根據id檢視           

日志檢視

pm2 logs            //檢視所有應用日志
pm2 logs [Name]    //根據指定應用名檢視應用日志
pm2 logs [ID]      //根據指定應用ID檢視應用日志           

儲存目前應用清單

pm2 save           

重新開機儲存的應用清單

pm2 resurrect           

清除儲存的應用清單

pm2 cleardump           

儲存并恢複PM2程序

pm2 update           

PM2配置檔案方式生成示例配置檔案

pm2 ecosystem        //生成一個示例JSON配置檔案pm2 init           

配置檔案示例(實際使用自行删除)

module.exports = {
    apps : [{
        name      : 'API',      //應用名
        script    : 'app.js',   //應用檔案位置
        env: {
            PM2_SERVE_PATH: ".",    //靜态服務路徑
            PM2_SERVE_PORT: 8080,   //靜态伺服器通路端口
            NODE_ENV: 'development' //啟動預設模式
        },
        env_production : {
            NODE_ENV: 'production'  //使用production模式 pm2 start ecosystem.config.js --env production
        },
        instances:"max",          //将應用程式分布在所有CPU核心上,可以是整數或負數
        watch:true,               //監聽模式
        output: './out.log',      //指定日志标準輸出檔案及位置
        error: './error.log',     //錯誤輸出日志檔案及位置,pm2 install pm2-logrotate進行日志檔案拆分
        merge_logs: true,         //叢集情況下,可以合并日志
        log_type:"json",          //日志類型
        log_date_format: "DD-MM-YYYY",  //日志日期記錄格式
    }],
    deploy : {
        production : {
            user : 'node',                      //ssh 使用者
            host : '212.83.163.1',              //ssh 位址
            ref  : 'origin/master',             //GIT遠端/分支
            repo : '[email protected]:repo.git',   //git位址
            path : '/var/www/production',       //伺服器檔案路徑
            post-deploy : 'npm install && pm2 reload ecosystem.config.js --env production'  //部署後的動作
        }
    }
};           

進入正題,啟動服務方式有很多種不細講看圖說話,舉例1,npm start指令,就相當于執行 node ./bin/www

PM2基本指令守護程式熱啟動VUE或Express等項目

VUE項目舉例2,npm run dev 實際就是運作node腳本檔案:dev-server.js

PM2基本指令守護程式熱啟動VUE或Express等項目

舉例3,或者更多不一樣的代碼,實際都是運作腳本檔案

PM2基本指令守護程式熱啟動VUE或Express等項目

比如 npm run dev,都可以這樣啟動服務

pm2 start npm -- run dev           

現在已經啟動

PM2基本指令守護程式熱啟動VUE或Express等項目

這裡serve對應腳本裡面的scripts,通過指令更改名稱并進行熱啟動 hello 是自定義名稱

pm2 start npm --watch --name hello -- run serve           

已經修改成功

PM2基本指令守護程式熱啟動VUE或Express等項目

Express這個NodeJS架構我們同樣看package.json配置檔案,相當于執行 node ./bin/www,隻不過後面改成對應scripts裡面的start

pm2 start npm --watch --name wwwtest -- run start           

wwwtest 是自定義名稱

PM2基本指令守護程式熱啟動VUE或Express等項目

控制台輸入:pm2,控制台會給出日常指令,并且會對這些指令給出對應說明,還是很友善的。

繼續閱讀