PM2快速入門

PM2使用手冊

PM2是什么?

PM2(Process Manager 2 )是具有內(nèi)置負(fù)載均衡器的Node.js應(yīng)用程序的生產(chǎn)運(yùn)行時(shí)和進(jìn)程管理器。 它允許您永久保持應(yīng)用程序活躍,無需停機(jī)即可重新加載它們盼忌,并促進(jìn)常見的Devops任務(wù)搀缠。

特性

  • 日志管理:應(yīng)用程序日志保存在服務(wù)器的硬盤中~/.pm2/logs/

  • 負(fù)載均衡:PM2可以通過創(chuàng)建共享同一服務(wù)器端口的多個(gè)子進(jìn)程來擴(kuò)展您的應(yīng)用程序。這樣做還允許您以零秒停機(jī)時(shí)間重新啟動應(yīng)用程序黎烈。

  • 終端監(jiān)控:可以在終端中監(jiān)控您的應(yīng)用程序并檢查應(yīng)用程序運(yùn)行狀況(CPU使用率,使用的內(nèi)存匀谣,請求/分鐘等)照棋。

  • SSH部署:自動部署,避免逐個(gè)在所有服務(wù)器中進(jìn)行ssh武翎。

  • 靜態(tài)服務(wù):支持靜態(tài)服務(wù)器功能

  • 多平臺支持:適用于Linux(穩(wěn)定)和macOS(穩(wěn)定)和Windows(穩(wěn)定)

安裝

npm install pm2 -g

命令方式

啟動服務(wù)

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

停止服務(wù)

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 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)用

創(chuàng)建開機(jī)自啟動

pm2 startup

更新PM2

pm2 updatePM2
pm2 update

監(jiān)聽模式

pm2 start app.js --watch    //當(dāng)文件發(fā)生變化烈炭,自動重啟

靜態(tài)服務(wù)器

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

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

//max 表示PM2將自動檢測可用CPU的數(shù)量并運(yùn)行盡可能多的進(jìn)程
//max可以自定義宝恶,如果是4核CPU符隙,設(shè)置為2者占用2個(gè)
pm2 start app.js -i max

重新啟動

//同時(shí)殺死并重啟所有進(jìn)程。短時(shí)間內(nèi)服務(wù)不可用垫毙。生成環(huán)境推薦使用reload
pm2 restart app.js

0秒停機(jī)重新加載

pm2 reload app.js        //重新啟動所有進(jìn)程霹疫,始終保持至少一個(gè)進(jìn)程在運(yùn)行
pm2 gracefulReload all   //優(yōu)雅地以群集模式重新加載所有應(yīng)用程序

查看啟動列表

pm2 list

查看每個(gè)應(yīng)用程序占用情況

pm2 monit

顯示應(yīng)用程序所有信息

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

日志查看

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

保存當(dāng)前應(yīng)用列表

pm2 save

重啟保存的應(yīng)用列表

pm2 resurrect

清除保存的應(yīng)用列表

pm2 cleardump

保存并恢復(fù)PM2進(jìn)程

pm2 update

配置文件方式

生成示例配置文件

pm2 ecosystem        //生成一個(gè)示例JSON配置文件
pm2 init

配置文件示例

module.exports = {
    apps : [{
        name      : 'API',      //應(yīng)用名
        script    : 'app.js',   //應(yīng)用文件位置
        env: {
            PM2_SERVE_PATH: ".",    //靜態(tài)服務(wù)路徑
            PM2_SERVE_PORT: 8080,   //靜態(tài)服務(wù)器訪問端口
            NODE_ENV: 'development' //啟動默認(rèn)模式
        },
        env_production : {
            NODE_ENV: 'production'  //使用production模式 pm2 start ecosystem.config.js --env production
        },
        instances:"max",          //將應(yīng)用程序分布在所有CPU核心上,可以是整數(shù)或負(fù)數(shù)
        watch:true,               //監(jiān)聽模式
        output: './out.log',      //指定日志標(biāo)準(zhǔn)輸出文件及位置
        error: './error.log',     //錯(cuò)誤輸出日志文件及位置,pm2 install pm2-logrotate進(jìn)行日志文件拆分
        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遠(yuǎn)程/分支
            repo : 'git@github.com:repo.git',   //git地址
            path : '/var/www/production',       //服務(wù)器文件路徑
            post-deploy : 'npm install && pm2 reload ecosystem.config.js --env production'  //部署后的動作
        }
    }
};
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末丽蝎,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子膀藐,更是在濱河造成了極大的恐慌屠阻,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件额各,死亡現(xiàn)場離奇詭異国觉,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)虾啦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進(jìn)店門麻诀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人傲醉,你說我怎么就攤上這事蝇闭。” “怎么了需频?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵丁眼,是天一觀的道長。 經(jīng)常有香客問我昭殉,道長苞七,這世上最難降的妖魔是什么藐守? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮蹂风,結(jié)果婚禮上卢厂,老公的妹妹穿的比我還像新娘。我一直安慰自己惠啄,他們只是感情好慎恒,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著撵渡,像睡著了一般融柬。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上趋距,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天粒氧,我揣著相機(jī)與錄音,去河邊找鬼节腐。 笑死外盯,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的翼雀。 我是一名探鬼主播饱苟,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼狼渊!你這毒婦竟也來了箱熬?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤囤锉,失蹤者是張志新(化名)和其女友劉穎坦弟,沒想到半個(gè)月后护锤,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體官地,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年烙懦,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了驱入。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,599評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡氯析,死狀恐怖亏较,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情掩缓,我是刑警寧澤雪情,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站你辣,受9級特大地震影響巡通,放射性物質(zhì)發(fā)生泄漏尘执。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一宴凉、第九天 我趴在偏房一處隱蔽的房頂上張望誊锭。 院中可真熱鬧,春花似錦弥锄、人聲如沸丧靡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽温治。三九已至,卻和暖如春戒悠,著一層夾襖步出監(jiān)牢的瞬間罐盔,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工救崔, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留惶看,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓六孵,卻偏偏與公主長得像纬黎,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子劫窒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評論 2 348

推薦閱讀更多精彩內(nèi)容