天天看點

pm2 start 帶參數_pm2

PM2

1. pm2 是開源的基于Nodejs的程序管理器,包括守護程序、監控、日志的一整套完整的功能;

2. pm2 基本是node應用程式不二的守護程序選擇;

3. 事實上,pm2并不僅僅可以啟動node程式,對于一般的腳本程式同樣可以勝任;

4. pm2 帶有負載均衡功能,可以保持node應用程序永遠運作在背景;

5. pm2 還有個非常強大的deploy功能,可以從本地直接部署線上網站。

node與PM2

1. 對于線上項目,如果直接通過 node app 來啟動,如果報錯了可能直接停止導緻整個服務崩潰;

2. 一般監控 node 的幾種程序管理方案:

1. supervisor: 一般用作開發環境的使用;

2. forever: 管理多個站點,一般每個站點的通路量不大的情況,不需要監控;

3. PM2: 網站的通路量比較大,需要完整的監控頁面。

3. pm2的特性:

1. 内建負載均衡(使用 Node cluster 叢集子產品);

2. 背景運作;

3. 0 秒停機重載,維護更新時不需要停機;

4. 具有 Ubuntu 和 CentOS 的啟動腳本;

5. 停止不穩定的程序(避免無限循環);

6. 控制台檢測;

7. 提供 HTTP API;

8. 遠端控制和實時的接口 API ( Nodejs 子產品,允許和 PM2 程序管理器互動 )。

4. 全局安裝:npm install -g pm2

PM2指令

1. 啟動指令

1. pm2 start app.js:啟動nodeJs應用,程序的預設名稱為檔案名app

2. pm2 start app.js --name mynode:啟動node,并指定程序名稱為mynode

3. pm2 start app.js -i max:根據有效CPU數目啟動最大程序數目

4. pm2 start app.js -i 3:啟動3個程序

5. pm2 start app.js --watch:實時監控的方式啟動,app.js檔案有變動時,pm2會自動reload

6. pm2 start app.js -x:用fork模式啟動 app.js 而不是使用 cluster

7. pm2 start app.js -x -- -a 23:用fork模式啟動 app.js 并且傳遞參數(-a 23)

8. pm2 start app.json:啟動程序, 在 app.json裡設定選項

9. pm2 start app.js -i max -- -a 23:在 -- 之後給 app.js 傳遞參數

10. pm2 start app.js -i max -e err.log -o out.log:啟動并生成一個配置檔案

2. 檢視與監視程序

1. pm2 list:顯示所有程序;

2. pm2 show 0,pm2 info 0:檢視程序id為 0 的詳細資訊;

3. pm2 monit:進入監視頁面,監視每個node程序的CPU和記憶體的使用情況。

3. 停止、删除程序

1. pm2 stop/delete 0:停止/删除id為 0 的程序;

2. pm2 stop/delete all:停止/删除所有程序。

4. 重新開機、重載

1. pm2 restart 0:重新開機id為 0 的程序;

2. pm2 restart all:重新開機所有程序;

3. pm2 reload 0:0秒停機重載id為 0 程序(用于 NETWORKED 程序);

4. pm2 reload all:重載所有程序。

5. 日志操作

1. pm2 logs:顯示所有程序的日志;

2. pm2 logs 0:顯示程序id為 0 的日志;

3. pm2 flush:清空所有日志檔案;

4. pm2 reloadLogs:重載所有日志。

6. pm2 startup:産生 init 腳本,保持程序活着。

配置檔案的方式啟動:process.yml

apps:

- script: app.js

instances: 2

watch: true

env:

NODE_ENV: production

啟動:pm2 start process.yml

pm2 kill 殺死PM2程序。

PM2啟動nuxt

1. 打包nuxt項目:npm run build

2. pm2啟動(Linux):

1. pm2 start npm --name mynuxt -- start

2. pm2 start npm --name "my-nuxt" -- run start

3. 預設情況下,用公網無法直接通路nuxt,必須配置nginx轉發,才能通路

1. nuxt應用端口号為3000

2. nginx監聽80端口,轉發給3000端口,用公網通路80端口

4. 配置nuxt的package.json,直接通過公網通路nuxt應用

1. 在package.json中添加一個新的節點,與"dependencies"同級

"config": {

"nuxt": {

"host": "0.0.0.0",

"port": 3000

}

}

2. 伺服器打開nuxt監聽的端口3000,即可通路

ncc

ncc:類似于 gcc 的 Node.js 一鍵編譯打包工具,一個簡單的 CLI 工具,可以一鍵把一個 Node.js 項目編譯打包成單個 JS 檔案

npm i -g @zeit/ncc

ncc build app.js:開始打包,所有檔案和引用都被打包編譯到一個檔案中,dist/index.js

ncc 受啟發于 Go 語言的 build 功能(導出一個靜态 ELF 可執行檔案),目的也是輸出一個 包含了所有依賴的獨立可執行腳本。

ncc 本身基于 webpack 開發,項目也是由 ZEIT、webpack 作者( Tobias Koppers )、rollup 作者( Guy Bedford )合作貢獻而成。