node項目部署進程管理神器PM2介紹和入門指南

PM2是什么

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

重點在于相满,用這玩意啟動的項目可以監(jiān)測運行數(shù)據(jù),也可以同時看多個項目的運行狀況

PM2特性

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

負(fù)載均衡: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ù)器功能

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

一、PM2安裝

npm install pm2 -g

yarn global add pm2

apt update && apt install sudo curl && curl -sL https://raw.githubusercontent.com/Unitech/pm2/master/packager/setup.deb.sh | sudo -E bash -

二桑逝、PM2命令方式

啟動服務(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)建開機自啟動

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ù)量并運行盡可能多的進程

//max可以自定義楞遏,如果是4核CPU,設(shè)置為2者占用2個

pm2 start app.js -i max

重新啟動

pm2 restart app.js? ? ? ? //同時殺死并重啟所有進程首昔。短時間內(nèi)服務(wù)不可用寡喝。生成環(huán)境推薦使用reload

0秒停機重新加載

pm2 reload app.js? ? ? ? //重新啟動所有進程,始終保持至少一個進程在運行

pm2 gracefulReload all? //優(yōu)雅地以群集模式重新加載所有應(yīng)用程序

查看啟動列表

pm2 list

查看每個應(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進程

pm2 update

三勒奇、PM2配置文件方式

生成示例配置文件

pm2 ecosystem? ? ? ? //生成一個示例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',? ? //錯誤輸出日志文件及位置预鬓,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遠(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)系作者
  • 序言:七十年代末赊颠,一起剝皮案震驚了整個濱河市格二,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌竣蹦,老刑警劉巖顶猜,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異痘括,居然都是意外死亡长窄,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進店門纲菌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來挠日,“玉大人,你說我怎么就攤上這事翰舌∠保” “怎么了?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵椅贱,是天一觀的道長懂算。 經(jīng)常有香客問我唉韭,道長,這世上最難降的妖魔是什么犯犁? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任属愤,我火速辦了婚禮,結(jié)果婚禮上酸役,老公的妹妹穿的比我還像新娘住诸。我一直安慰自己,他們只是感情好涣澡,可當(dāng)我...
    茶點故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布贱呐。 她就那樣靜靜地躺著,像睡著了一般入桂。 火紅的嫁衣襯著肌膚如雪奄薇。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天抗愁,我揣著相機與錄音馁蒂,去河邊找鬼。 笑死蜘腌,一個胖子當(dāng)著我的面吹牛沫屡,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播撮珠,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼沮脖,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了芯急?” 一聲冷哼從身側(cè)響起勺届,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎娶耍,沒想到半個月后免姿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡伺绽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年养泡,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奈应。...
    茶點故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡澜掩,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出杖挣,到底是詐尸還是另有隱情肩榕,我是刑警寧澤,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站株汉,受9級特大地震影響筐乳,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜乔妈,卻給世界環(huán)境...
    茶點故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一蝙云、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧路召,春花似錦勃刨、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至唯灵,卻和暖如春贾铝,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背埠帕。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工垢揩, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人搞监。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓水孩,卻偏偏與公主長得像镰矿,于是被迫代替她去往敵國和親琐驴。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,514評論 2 348

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