nodejs高大上的部署方式-PM2

來源:互聯網
上載者:User

標籤:

  今天坐在右邊的同事忽然欣喜的跟我說:嘿,推薦你個好東西,用PM2試試,比forever高端多了。表示一向落後於時尚的科技前沿的我認真的回答:什嗎?PM2.5還這麼嚴重,PM2又出來了!

  要不是都已習慣了我的二,這氣氛還真要囧好一會兒~~呵呵……

 

  先說說平時我都是怎麼部署程式的吧

  1、最常用的屬nohup了,其實就是在後台執行進程,末尾加個&

[[email protected] ~]$ nohup node /home/zhoujie/ops/app.js &[1] 31490nohup: ignoring input and appending output to `nohup.out‘

即此時程式已啟動,直接存取即可,原程式的的標準輸出被自動改向到目前的目錄下的nohup.out檔案,起到了log的作用。該命令可以在你退出帳戶/關閉終端之後繼續運行相應的進程。nohup就是不掛起的意思( no hang up)。

該命令的一般形式為:nohup command &

  這個不太靠譜的樣子,經常默默的進程在後台就掛了

 

  2、用screen另開一個螢幕,這種方式可以直接在螢幕上看到程式運行情況

給該應用程式開個screen,如:screen -r ops ,用npm start啟動,

退出該後台:ctrl + a,再按d,可不能直接ctrl +c,否則就退出了

這種方式很不專業,呵呵,不過方便看在生產環境的操作。

這個本質上用的forever,package.json裡配置的:

  "scripts": {    "start": "forever app.js",    "test": "supervisor app.js"  },

 

  3、PM2

使用它要先安裝它,用root帳號和全域模式安裝一下:

npm install -g pm2

用它來啟動程式(在目前的目錄下可以直接啟動,pm2 start app.js --name uops)

[[email protected]dev uops]$ pm2 start app.js [PM2] Spawning PM2 daemon[PM2] Success[PM2] Process app.js launched┌──────────┬────┬──────┬─────┬────────┬───────────┬────────┬─────────────┬──────────┐│ App name │ id │ mode │ PID │ status │ restarted │ uptime │      memory │ watching │├──────────┼────┼──────┼─────┼────────┼───────────┼────────┼─────────────┼──────────┤│ app      │ 0  │ fork │ 308 │ online │         0 │ 0s     │ 21.879 MB   │ disabled │└──────────┴────┴──────┴─────┴────────┴───────────┴────────┴─────────────┴──────────┘ Use `pm2 info <id|name>` to get more details about an app
[[email protected] uops]$

看,它顯示了Success,程式已經默默的成功的啟動了,可以即時監控程式的運行,比如執行個pm2 restart,則上述restarted那欄變成1,可以顯示程式運行了多長時間、佔用記憶體大小,實在是太贊啦!

終止程式也很簡單:pm2 stop 

列舉出所有用pm2啟動的程式:pm2 list

[[email protected]dev uops]$ pm2 list┌──────────┬────┬──────┬─────┬────────┬───────────┬────────┬─────────────┬──────────┐│ App name │ id │ mode │ PID │ status │ restarted │ uptime │      memory │ watching │├──────────┼────┼──────┼─────┼────────┼───────────┼────────┼─────────────┼──────────┤│ app      │ 0  │ fork │ 984 │ online │         1 │ 3s     │ 64.141 MB   │ disabled │└──────────┴────┴──────┴─────┴────────┴───────────┴────────┴─────────────┴──────────┘ Use `pm2 info <id|name>` to get more details about an app

查看啟動程式的詳細資料:pm2 describe id

[[email protected] uops]$ pm2 desc 0Describing process with pid 0 - name app┌───────────────────┬─────────────────────────────────────────┐│ status            │ online                                  ││ name              │ app                                     ││ id                │ 0                                       ││ path              │ /home/zhoujie/uops/app.js               ││ args              │                                         ││ exec cwd          │ /home/zhoujie/uops                      ││ error log path    │ /home/zhoujie/.pm2/logs/app-error-0.log ││ out log path      │ /home/zhoujie/.pm2/logs/app-out-0.log   ││ pid path          │ /home/zhoujie/.pm2/pids/app-0.pid       ││ mode              │ fork_mode                               ││ node v8 arguments │                                         ││ watch & reload    │ ?                                       ││ interpreter       │ node                                    ││ restarts          │ 1                                       ││ unstable restarts │ 0                                       ││ uptime            │ 93s                                     ││ created at        │ 2015-01-07T09:41:25.672Z                │└───────────────────┴─────────────────────────────────────────┘[[email protected]-dev uops]$ 

通過pm2 list命令來觀察所有啟動並執行進程以及它們的狀態已經足夠好了.但是怎麼來追蹤它們的資源消耗呢?別擔心,用這個命令:pm2 monit

可以得到進程(以及叢集)的CPU的使用率和記憶體佔用(ctrl +c 退出)

即時集中log處理:pm2 logs

 

強大API: pm2 web

你想要監控所有被PM2管理的進程,而且同時還想監控運行這些進程的機器的狀態,

[[email protected]dev uops]$ pm2 webLaunching web interface on port 9615[PM2] Process /usr/local/node/lib/node_modules/pm2/lib/HttpInterface.js launched[PM2] Process launched┌────────────────────┬────┬──────┬──────┬────────┬───────────┬────────┬─────────────┬──────────┐│ App name           │ id │ mode │ PID  │ status │ restarted │ uptime │      memory │ watching │├────────────────────┼────┼──────┼──────┼────────┼───────────┼────────┼─────────────┼──────────┤│ app                │ 0  │ fork │ 984  │ online │         1 │ 9m     │ 74.762 MB   │ disabled ││ pm2-http-interface │ 1  │ fork │ 1878 │ online │         0 │ 0s     │ 15.070 MB   │ disabled │└────────────────────┴────┴──────┴──────┴────────┴───────────┴────────┴─────────────┴──────────┘ Use `pm2 info <id|name>` to get more details about an app

啟動程式的時候順便在瀏覽器訪問:http://localhost:9615

擦,我眼睛被亮瞎了,這麼炫酷,竟然把部署的伺服器的資訊和程式的資訊都顯示出來了:

這東西對程式啟動並執行監控頁面的開發實在是太有協助了,呵呵~~

 

  好吧,我承認我有點失控了,前面說的有點混亂,我願意重新把命令整理一遍:

安裝:npm install -g pm2啟動程式:pm2 start <app_name|id|all>列舉進程:pm2 list退出程式:pm2 stop <app_name|id|all>重起應用:pm2 restart程式資訊:pm2 describe id|all監控:pm2 monit即時集中log處理: pm2 logsAPI:pm2 web (連接埠:9615 )

 

推薦:https://github.com/Unitech/pm2

http://www.oschina.net/translate/goodbye-node-forever-hello-pm2?cmp

nodejs高大上的部署方式-PM2

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.