1. 程式人生 > 其它 >【Node小白入門】Node服務部署工具之pm2

【Node小白入門】Node服務部署工具之pm2

技術標籤:Node小白入門nodejsnode.jspm2

寫在前面,大家好!我是【跨考菌】,一枚跨界的程式猿,專注於後臺技術的輸出,目標成為全棧攻城獅!這部落格是對我跨界過程的總結和思考。如果你也對Java後端技術感興趣,抑或是正在糾結於跨界,都可以關注我的動態,讓我們一起學習,一起進步~
我的部落格地址為:【跨考菌】的部落格

目錄

在這裡插入圖片描述

通常我們啟動一個node服務多是採用node或者nodemon命令啟動服務,一旦命令列關閉,服務就掛掉了,為了將node服務作為一個後臺服務執行,可以使用pm2命令來統一管理node服務並作為後臺服務執行。

1 pm2命令入門

pm2 是一個帶有負載均衡功能的Node應用的程序管理器.當你要把你的獨立程式碼利用全部的伺服器上的所有CPU,並保證程序永遠都活著

安裝:

​npm install -g pm2

使用:

啟動應用 pm2 start app.js

[[email protected] server]# pm2 start app.js
[PM2] Starting /www/server/yapi/vendors/server/app.js in fork_mode (1 instance)
[PM2] Done.
┌──────────┬────┬─────────┬──────┬───────┬────────┬─────────┬────────┬─────┬──────────┬──────┬──────────┐
│ App name │ id
│ version │ mode │ pid │ status │ restart │ uptime │ cpu │ mem │ user │ watching │ ├──────────┼────┼─────────┼──────┼───────┼────────┼─────────┼────────┼─────┼──────────┼──────┼──────────┤ │ app │ 0 │ 1.7.1 │ fork │ 21501 │ online │ 0 │ 0s │ 0% │ 2.9 MB │ root │ disabled │ └──────────┴────┴─────────┴──────┴───────┴────────┴─────────┴────────┴─────┴──────────┴──────┴──────────┘ Use `
pm2 show <id|name>`
to get more details about an app [[email protected] server]#

重啟應用 pm2 restart app.js

顯示程序列表 pm2 list

停止某應用 pm2 stop app_name|app_id

停止所有應用 pm2 stop all
儲存現有列表資料pm2 save:開機後會自動載入已儲存的應用列表進行啟動

[[email protected] server]# pm2 save
[PM2] Saving current process list...
[PM2] Successfully saved in /root/.pm2/dump.pm2
[[email protected] server]# 

進行設定開機啟動 pm2 startup

更多pm2命令可以參考:https://blog.csdn.net/sunscheung/article/details/79171608

2 pm2部署node服務並設定開機自啟動

執行node.js服務的時候,如果伺服器不小心或者因為其他原因重啟了,服務不會跟著重啟,需要手動執行服務,這樣肯定是很不方便的,當然可以通過shell指令碼進行啟動,不過這樣的不利於服務管理。可以通過pm2進行管理。

第一步:
執行 pm2 startup,即在/etc/init.d/目錄下生成pm2-root的啟動指令碼,且自動將pm2-root設為服務。

第二步:
執行 pm2 save,會將當前pm2所執行的應用儲存在/root/.pm2/dump.pm2下,當開機重啟時,執行pm2-root服務指令碼,並且到/root/.pm2/dump.pm2下讀取應用並啟動。

[[email protected] server]# pm2 save
[PM2] Saving current process list...
[PM2] Successfully saved in /root/.pm2/dump.pm2
[[email protected] server]# 

centos7 可以通過systemctl檢視服務狀態

[[email protected] server]# systemctl status pm2-root
● pm2-root.service - PM2 process manager
   Loaded: loaded (/etc/systemd/system/pm2-root.service; enabled; vendor preset: disabled)
   Active: inactive (dead)
     Docs: https://pm2.keymetrics.io/
[[email protected] server]# 

這樣的話,你正在執行的pm2服務開機之後就可以自啟動了。