pm2

PM2

1. pm2 是開源的基于Nodejs的進(jìn)程管理器场仲,包括守護(hù)進(jìn)程贫橙、監(jiān)控、日志的一整套完整的功能客冈;
2. pm2 基本是node應(yīng)用程序不二的守護(hù)進(jìn)程選擇锐秦;
3. 事實(shí)上,pm2并不僅僅可以啟動(dòng)node程序梯捕,對(duì)于一般的腳本程序同樣可以勝任;
4. pm2 帶有負(fù)載均衡功能纳鼎,可以保持node應(yīng)用進(jìn)程永遠(yuǎn)運(yùn)行在后臺(tái);
5. pm2 還有個(gè)非常強(qiáng)大的deploy功能裳凸,可以從本地直接部署線上網(wǎng)站贱鄙。

node與PM2

1. 對(duì)于線上項(xiàng)目,如果直接通過 node app 來啟動(dòng)姨谷,如果報(bào)錯(cuò)了可能直接停止導(dǎo)致整個(gè)服務(wù)崩潰逗宁;
2. 一般監(jiān)控 node 的幾種進(jìn)程管理方案:
   1. supervisor: 一般用作開發(fā)環(huán)境的使用;
   2. forever: 管理多個(gè)站點(diǎn)菠秒,一般每個(gè)站點(diǎn)的訪問量不大的情況疙剑,不需要監(jiān)控;
   3. PM2: 網(wǎng)站的訪問量比較大践叠,需要完整的監(jiān)控頁(yè)面言缤。
3. pm2的特性:
   1. 內(nèi)建負(fù)載均衡(使用 Node cluster 集群模塊);
   2. 后臺(tái)運(yùn)行禁灼;
   3. 0 秒停機(jī)重載管挟,維護(hù)升級(jí)時(shí)不需要停機(jī);
   4. 具有 Ubuntu 和 CentOS 的啟動(dòng)腳本弄捕;
   5. 停止不穩(wěn)定的進(jìn)程(避免無限循環(huán))僻孝;
   6. 控制臺(tái)檢測(cè);
   7. 提供 HTTP API守谓;
   8. 遠(yuǎn)程控制和實(shí)時(shí)的接口 API ( Nodejs 模塊穿铆,允許和 PM2 進(jìn)程管理器交互 )。
4. 全局安裝:npm install -g pm2

PM2命令

1. 啟動(dòng)命令
  1. pm2 start app.js:?jiǎn)?dòng)nodeJs應(yīng)用斋荞,進(jìn)程的默認(rèn)名稱為文件名app
  2. pm2 start app.js --name mynode:?jiǎn)?dòng)node荞雏,并指定進(jìn)程名稱為mynode
  3. pm2 start app.js -i max:根據(jù)有效CPU數(shù)目啟動(dòng)最大進(jìn)程數(shù)目
  4. pm2 start app.js -i 3:?jiǎn)?dòng)3個(gè)進(jìn)程
  5. pm2 start app.js --watch:實(shí)時(shí)監(jiān)控的方式啟動(dòng),app.js文件有變動(dòng)時(shí)平酿,pm2會(huì)自動(dòng)reload
  6. pm2 start app.js -x:用fork模式啟動(dòng) app.js 而不是使用 cluster
  7. pm2 start app.js -x -- -a 23:用fork模式啟動(dòng) app.js 并且傳遞參數(shù)(-a 23)
  8. pm2 start app.json:?jiǎn)?dòng)進(jìn)程, 在 app.json里設(shè)置選項(xiàng)
  9. pm2 start app.js -i max -- -a 23:在 -- 之后給 app.js 傳遞參數(shù)
  10. pm2 start app.js -i max -e err.log -o out.log:?jiǎn)?dòng)并生成一個(gè)配置文件
2. 查看與監(jiān)視進(jìn)程
  1. pm2 list:顯示所有進(jìn)程凤优;
  2. pm2 show 0,pm2 info 0:查看進(jìn)程id為 0 的詳細(xì)信息蜈彼;
  3. pm2 monit:進(jìn)入監(jiān)視頁(yè)面筑辨,監(jiān)視每個(gè)node進(jìn)程的CPU和內(nèi)存的使用情況。
3. 停止幸逆、刪除進(jìn)程
  1. pm2 stop/delete 0:停止/刪除id為 0 的進(jìn)程棍辕;
  2. pm2 stop/delete all:停止/刪除所有進(jìn)程暮现。
4. 重啟、重載
  1. pm2 restart 0:重啟id為 0 的進(jìn)程痢毒;
  2. pm2 restart all:重啟所有進(jìn)程送矩;
  3. pm2 reload 0:0秒停機(jī)重載id為 0 進(jìn)程(用于 NETWORKED 進(jìn)程);
  4. pm2 reload all:重載所有進(jìn)程哪替。
5. 日志操作
  1. pm2 logs:顯示所有進(jìn)程的日志;
  2. pm2 logs 0:顯示進(jìn)程id為 0 的日志菇怀;
  3. pm2 flush:清空所有日志文件凭舶;
  4. pm2 reloadLogs:重載所有日志。
6. pm2 startup:產(chǎn)生 init 腳本爱沟,保持進(jìn)程活著帅霜。
  1. 配置文件的方式啟動(dòng):process.yml
    apps:
      - script: app.js
        instances: 2
        watch: true
        env:
            NODE_ENV: production    
    
    啟動(dòng):pm2 start process.yml
    • json格式的配置文件:pm2.json
    "name": "node-app",
    "script": "app.js",
    "log_date_format": "YYYY-MM-DD HH:mm Z",
    "out_file": "log/node-app.stdout.log",
    "watch": true,
    "instances": "max",
    "exec_mode": "cluster"
    
    啟動(dòng):pm2 start pm2.json
    pm2 的日志并不專業(yè),還是建議用 log4js
  2. pm2 kill 殺死PM2進(jìn)程呼伸。

PM2啟動(dòng)nuxt

1. 打包nuxt項(xiàng)目:npm run build
2. pm2啟動(dòng)(Linux):
  1. pm2 start npm --name mynuxt -- start
  2. pm2 start npm --name "my-nuxt" -- run start
3. 默認(rèn)情況下身冀,用公網(wǎng)無法直接訪問nuxt,必須配置nginx轉(zhuǎn)發(fā)括享,才能訪問
  1. nuxt應(yīng)用端口號(hào)為3000
  2. nginx監(jiān)聽80端口搂根,轉(zhuǎn)發(fā)給3000端口,用公網(wǎng)訪問80端口
4. 配置nuxt的package.json铃辖,直接通過公網(wǎng)訪問nuxt應(yīng)用
  1. 在package.json中添加一個(gè)新的節(jié)點(diǎn)剩愧,與"dependencies"同級(jí)
  "config": {
    "nuxt": {
      "host": "0.0.0.0",
      "port": 3000
    }
  }
  2. 服務(wù)器打開nuxt監(jiān)聽的端口3000,即可訪問

ncc

ncc:類似于 gccNode.js 一鍵編譯打包工具娇斩,一個(gè)簡(jiǎn)單的 CLI 工具仁卷,可以一鍵把一個(gè) Node.js 項(xiàng)目編譯打包成單個(gè) JS 文件
npm i -g @zeit/ncc
ncc build app.js:開始打包,所有文件和引用都被打包編譯到一個(gè)文件中犬第,dist/index.js

ncc 受啟發(fā)于 Go 語(yǔ)言的 build 功能(導(dǎo)出一個(gè)靜態(tài) ELF 可執(zhí)行文件)锦积,目的也是輸出一個(gè) 包含了所有依賴的獨(dú)立可執(zhí)行腳本
ncc 本身基于 webpack 開發(fā)歉嗓,項(xiàng)目也是由 ZEIT丰介、webpack 作者( Tobias Koppers )、rollup 作者( Guy Bedford )合作貢獻(xiàn)而成遥椿。

keymetrics

keymetrics 一個(gè) PM2可視化在線監(jiān)控平臺(tái)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末基矮,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子冠场,更是在濱河造成了極大的恐慌家浇,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件碴裙,死亡現(xiàn)場(chǎng)離奇詭異钢悲,居然都是意外死亡点额,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門莺琳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來还棱,“玉大人,你說我怎么就攤上這事惭等≌涫郑” “怎么了?”我有些...
    開封第一講書人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵辞做,是天一觀的道長(zhǎng)琳要。 經(jīng)常有香客問我,道長(zhǎng)秤茅,這世上最難降的妖魔是什么稚补? 我笑而不...
    開封第一講書人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮框喳,結(jié)果婚禮上课幕,老公的妹妹穿的比我還像新娘。我一直安慰自己五垮,他們只是感情好乍惊,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著拼余,像睡著了一般污桦。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上匙监,一...
    開封第一講書人閱讀 51,482評(píng)論 1 302
  • 那天凡橱,我揣著相機(jī)與錄音,去河邊找鬼亭姥。 笑死稼钩,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的达罗。 我是一名探鬼主播坝撑,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼粮揉!你這毒婦竟也來了巡李?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤扶认,失蹤者是張志新(化名)和其女友劉穎侨拦,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體辐宾,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡狱从,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年膨蛮,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片季研。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡敞葛,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出与涡,到底是詐尸還是另有隱情惹谐,我是刑警寧澤,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布递沪,位于F島的核電站豺鼻,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏款慨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一谬莹、第九天 我趴在偏房一處隱蔽的房頂上張望檩奠。 院中可真熱鬧,春花似錦附帽、人聲如沸埠戳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)整胃。三九已至,卻和暖如春喳钟,著一層夾襖步出監(jiān)牢的瞬間屁使,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工奔则, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蛮寂,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓易茬,卻偏偏與公主長(zhǎng)得像酬蹋,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子抽莱,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354