Nodejs的部署方式pm2 start


在node的世界里面,並不存在nginx或者apache,甚至tomcat這種東東。一個node,本身就用幾行代碼,就可以啟動個server進程,監聽個端口,為大家提供web服務。這和傳統的網站代碼的部署,是極為不一致的。

nodejs網站啟動后其實是一個進程,直觀的視覺上是個黑色的dos窗口,當然也可以變成一個win服務。

pm2 是一個進程管理工具

1.可以用它來管理你的node進程

2.當然也支持性能監控,進程守護,負載均衡等功能

類似的進程管理工具還有Nssm,用法,請參考:https://nssm.cc/usage

我另一篇博文里有講使用nssm部署asp.netcore app接口網站的例子 :https://www.cnblogs.com/tuyile006/p/14355451.html

pm2 start 眾多方式

本文中將重點介紹pm2 start這個命令。我們將使用它來啟動不同的網站。因為node的世界里面,百花齊放的太厲害。啟動一個網站的辦法,也會有很多種。但是一般都可以用pm2 start來啟動。只不過具體的參數會有所不同。

pm2 start <js文件路徑>.js
pm2 start <json描述文件路徑>.json
pm2 start <python文件路徑>.py --interpreter python
pm2 start <sh文件路徑>.sh --interpreter bash
pm2 start ./node_modules/<某模塊名稱>/<模塊主文件路徑>.js
pm2 start <某種方式> -- --param_name param_value
pm2 start npm -- start
pm2 start npm -- run <scriptname>
pm2 start yarn -- start
pm2 start yarn -- run <scriptname>
pm2 start <某種方式> --watch

相比較官方推薦的運行某某js的方式,最容易的配置方式,其實是:

pm2 start npm -- run <scriptname>

上述命令,就相當於 npm run <scriptname>,而我們平時啟動node網站代碼的時候,就是用這種方式啟動的。對這個命令稍稍變形,就是pm2的start命令了。

這里通俗的理解一下,就是把原本傳遞給某個程序的參數在pm2 start里面用--來分割一下即可。

 

如果我們再進一步變化,最簡單的最好用的命令,是下面的這個,推薦大家使用:

pm2 start npm --watch --name <taskname> -- run start

您自行替換<taskname>為您的任務名稱即可。當然,如果您就一個任務的話,這個--name <taskname>也是不需要的。

而對於在package.json里面的script里面,如果能找到某個類似app.js的話,那么也可以使用官方推薦的方式。例如:

pm2 start server/app.js      //相當於 node server/app.js

甚至我們可以把配置項放在json文件里面,我們去執行這個json任務描述文件:

test.json

{
  "apps":
  {
    "name": "test",
    "cwd": "/yourpath/here/",
    "script": "./test.sh",
    "exec_interpreter": "bash",
    "min_uptime": "60s",
    "max_restarts": 30,
    "exec_mode" : "cluster_mode",
    "error_file" : "./test-err.log",
    "out_file": "./test-out.log",
    "pid_file": "./test.pid",
    "watch": false
  }
}

這個json文件里面,對這個pm2任務進行了詳細描述,是pm2 start這個命令的終極進化豪華版本。

 

PM2命令合集:

安裝

yarn add global pm2

# 或者

npm install pm2 -g

啟動

cd 目標文件夾

# --watch 加不加都可以 意思是檢測到代碼變化 自動重啟

pm2 start bin/www --watch

其他

# 啟動進程/應用 
pm2 start bin/www

# 重命名進程/應用 
pm2 start app.js --name wb123、

# 添加進程/應用 
pm2 start bin/www

# 結束進程/應用 
pm2 stop www

# 結束所有進程/應用 
pm2 stop all

# 刪除進程/應用 pm2 
delete www

# 刪除所有進程/應用 
pm2 delete all

# 列出所有進程/應用 
pm2 list

# 查看某個進程/應用具體情況
pm2 describe www

# 查看進程/應用的資源消耗情況
pm2 monit

# 查看pm2的日志 
pm2 logs 序號/名稱

# 若要查看某個進程/應用的日志,使用 
pm2 logs www

# 重新啟動進程/應用 
pm2 restart www

# 重新啟動所有進程/應用 
pm2 restart all

更進一步:將PM2以服務方式運行

我們發現運行pm2后是cmd形式,能不能以服務方式運行呢  

借助於pm2-windows-service 可以把pm2以windows服務運行。已服務運行的好處就是,即時用戶注銷也,pm2也會在后台運行

pm2-windows-service的github地址: https://github.com/jon-hall/pm2-windows-service

  1. npm i pm2 -g
  2. npm i pm2-windows-service -g
  3. 安裝服務:pm2-service-install -n myservice (安裝后在windows服務中多了一個myservice的服務)##卸載pm2-service-uninstall
  4. 設置環境變量:PM2_SERVICE_SCRIPTS = PM2的配置文件
  5. windows服務中重新啟動myservice服務


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM