1. 程式人生 > >PM2部署node.js專案

PM2部署node.js專案

使用PM2來部署nodejs專案。

如果直接通過node app來啟動,如果報錯了可能直接停在整個執行,supervisor感覺只是拿來用作開發環境的。再網上找到pm2.目前似乎最常見的線上部署nodejs專案的有forever,pm2這兩種。 使用場合:

  • supervisor是開發環境用。
  • forever管理多個站點,每個站點訪問量不大,不需要監控。
  • pm2 網站訪問量比較大,需要完整的監控介面。

PM2的主要特性:

  • 內建負載均衡(使用Node cluster 叢集模組)
  • 後臺執行
  • 0秒停機過載,我理解大概意思是維護升級的時候不需要停機.
  • 具有Ubuntu和CentOS 的啟動指令碼
  • 停止不穩定的程序(避免無限迴圈)
  • 控制檯檢測
  • 提供 HTTP API
  • 遠端控制和實時的介面API ( Nodejs 模組,允許和PM2程序管理器互動 )

安裝

npm install -g pm2

用法

$ npm install -g pm2 命令列全域性安裝pm2
$ pm2 start app.js 啟動app專案
$ pm2 list 列出由pm2管理的所有程序資訊,還會顯示一個程序會被啟動多少次,因為沒處理的異常。


$ pm2 monit 監視每個node程序的CPU和記憶體的使用情況


$ pm2 logs 顯示所有程序日誌 $ pm2 stop all
停止所有程序 $ pm2 restart all 重啟所有程序 $ pm2 reload all 0秒停機過載程序 (用於 NETWORKED 程序) $ pm2 stop 0 停止指定的程序 $ pm2 restart 0 重啟指定的程序 $ pm2 startup 產生 init 指令碼 保持程序活著 $ pm2 web 執行健壯的 computer API endpoint (http://localhost:9615) $ pm2 delete 0
殺死指定的程序 $ pm2 delete all 殺死全部程序

執行程序的不同方式: $ pm2 start app.js -i max 根據有效CPU數目啟動最大程序數目 $ pm2 start app.js -i 3 啟動3個程序 $ pm2 start app.js -x 用fork模式啟動 app.js 而不是使用 cluster $ pm2 start app.js -x -- -a 23 用fork模式啟動 app.js 並且傳遞引數 (-a 23) $ pm2 start app.js --name serverone 啟動一個程序並把它命名為 serverone $ pm2 stop serverone 停止 serverone 程序 $ pm2 start app.json 啟動程序, 在 app.json裡設定選項 $ pm2 start app.js -i max -- -a 23 在--之後給 app.js 傳遞引數 $ pm2 start app.js -i max -e err.log -o out.log 啟動 並 生成一個配置檔案

配置pm2啟動檔案

在專案根目錄新增一個processes.json: 內容如下:

{
  "apps": [
    {
      "name": "mywork",
      "cwd": "/srv/node-app/current",
      "script": "bin/www",
      "log_date_format": "YYYY-MM-DD HH:mm Z",
      "error_file": "/var/log/node-app/node-app.stderr.log",
      "out_file": "log/node-app.stdout.log",
      "pid_file": "pids/node-geo-api.pid",
      "instances": 6,
      "min_uptime": "200s",
      "max_restarts": 10,
      "max_memory_restart": "1M",
      "cron_restart": "1 0 * * *",
      "watch": false,
      "merge_logs": true,
      "exec_interpreter": "node",
      "exec_mode": "fork",
      "autorestart": false,
      "vizion": false
    }
  ]
}

說明:

  • apps:json結構,apps是一個數組,每一個數組成員就是對應一個pm2中執行的應用
  • name:應用程式名稱
  • cwd:應用程式所在的目錄
  • script:應用程式的指令碼路徑
  • log_date_format:
  • error_file:自定義應用程式的錯誤日誌檔案
  • out_file:自定義應用程式日誌檔案
  • pid_file:自定義應用程式的pid檔案
  • instances:
  • min_uptime:最小執行時間,這裡設定的是60s即如果應用程式在60s內退出,pm2會認為程式異常退出,此時觸發重啟max_restarts設定數量
  • max_restarts:設定應用程式異常退出重啟的次數,預設15次(從0開始計數)
  • cron_restart:定時啟動,解決重啟能解決的問題
  • watch:是否啟用監控模式,預設是false。如果設定成true,當應用程式變動時,pm2會自動過載。這裡也可以設定你要監控的檔案。
  • merge_logs:
  • exec_interpreter:應用程式的指令碼型別,這裡使用的shell,預設是nodejs
  • exec_mode:應用程式啟動模式,這裡設定的是cluster_mode(叢集),預設是fork
  • autorestart:啟用/禁用應用程式崩潰或退出時自動重啟
  • vizion:啟用/禁用vizion特性(版本控制)

可以通過pm2 start processes.json來啟動。
也可以把命令寫在package.json裡。如下:


通過npm run pm2來啟動。
原文:https://www.jianshu.com/p/d2a640b8661c

相關推薦

PM2部署node.js專案

使用PM2來部署nodejs專案。 如果直接通過node app來啟動,如果報錯了可能直接停在整個執行,supervisor感覺只是拿來用作開發環境的。再網上找到pm2.目前似乎最常見的線上部署nodejs專案的有forever,pm2這兩種。 使用場合: supervis

利用forever和pm2部署node.js

moni 停止 AR ins 自動重啟 api 項目 help appid 一、forever forever可以在cmd或ssh連接斷開時,讓項目一直運行,而且可以在項目崩潰時自動重啟 ?安裝 npm install -g forever ?forever的幫助手冊

阿里雲ECS伺服器部署Node.js專案詳細教程及多網站部署

本文詳細介紹如何部署NodeJS專案到阿里雲ECS上,以及本人在部署過程中所遇到的問題、坑點和解決辦法,可以說是全網最全最詳細的教程了。同時講解了如何申請阿里雲免費SSL證書,以及一臺ECS伺服器配置多網站的Nginx配置方法等。 作者:Kovli 1. 雲伺

阿里云云伺服器ECS部署Node.js專案

雲伺服器 ECS:參考阿里雲技術與支援-幫助文件點選開啟連結雲伺服器(Elastic Compute Service,簡稱 ECS)是一種簡單高效、處理能力可彈性伸縮的計算服務,快速構建更穩定、安全的應

pm2部署node專案

安裝: npm install pm2 -g 更新: pm2 update  pm2命令: 啟動express專案命令: pm2 start ./bin/www 列印日誌: pm2 logs 實時更新程式碼,不重啟伺服器,類似於熱更新:

node.js專案線上伺服器部署

圖1 node.js專案線上部署思路圖 假設我們電腦本地有五個專案:1.靜態網站 2.電影網站 3. 手機app 4.微信小程式 5.微信公眾號 這些應用都是跑在我們電腦本地,誰也看不到。我們需要放到網上供別人使用。 首先我們為這五個專

小試牛刀,pm2管理多個node.js專案

安裝pm2npm install -g pm2寫一個簡單的配置檔案pm2_config.json:{  "apps":[    {      "name":"resource-server",      "cwd":"/dtedu/platforms/resource-ser

通過新浪雲部署Node.js微信小程序商城(不用買域名、不用備案、不用配置https)

個數 bre rem faq 開發 mem nbsp edi home 本文檔為微信小程序商城NideShop項目的安裝部署教程(GitHub),歡迎star 一、購買新浪雲SAE 為什麽選擇SAE?免費二級域名和支持https訪問,不用備案,可用做微信小程序服務器。 S

一種簡單的生產環境部署Node.js程序方法

set process 一次 ann 來安 環境配置 load 修改 evel 最近在部署Node.js程序時,寫了段簡單的腳本,發覺還挺簡單的,忍不住想與大家分享。 配置文件 首先,本地測試環境和生產環境的數據庫連接這些配置信息是不一樣的,需要將其分開為兩個文件存儲

Linux環境部署Node.js

文件夾 taobao http nodejs 裝包 oba xshell5 tar 切換 介紹 先前在阿裏雲ECS上部署Node.js,碰到不少坑,都是自己不仔細造成的,所以準備再部署一遍,並記錄下來。我將我的服務器重置了,這次選擇的是CentOS 7.4 64位,上次的是

新浪SAE部署node.js(秒懂版)

使用 跳轉 start star 不出 發布 自動構建 依賴 .json 最近做了一個關於音樂的小項目想發布到公網,看了看大廠的雲虛擬主機感覺不太劃算,有大佬告訴我可以試試新浪SAE,我打開新浪雲官網感覺還不錯,決定在他上面部署看看。 找到產品-雲應用SAE-創建新應用,填

Node.js專案

這裡mongose語言可以參考https://www.jianshu.com/p/2f54b90efe15 首先配置好入口檔案app.js app.js中比較重要的兩個模組是express  swig(用於解析模板內容) 檔案解析模板swig的配置

開發筆記13 | 部署 Node.js 應用程式到雲 ECS

<<系列文章集 前言 在之前的一篇文章中,我們介紹了 如何將一個本地的 Java 應用程式直接部署到阿里雲 ECS ,有不少讀者反饋,在本文中,我們來介紹如何部署 Node.js 應用程式到阿里雲 ECS。 本地開發 本文采用一個極其基礎的樣例《在 Web 頁面列印 HelloWorl

Docker部署Node.js的方法步驟

前言 專案中會用到node做中間層,部署node則是用到了docker,在這裡總結、記錄下部署要點和步驟;關於docker的介紹和安裝這裡就不贅述了,網上也有很多相關的教程和文章了,需要可自行搜尋檢視。 專案結構 -- docker-node |-- data

不用買域名、不用備案、不用配置https快速部署Node.js微信小程式商城

本文件為開源微信小程式商城 NideShop 專案的安裝部署教程,歡迎 star NideShop 商城 api 服務端:https://github.com/tumobi/nideshop NideShop 微信小程式客戶端: https://github.com/tumobi/n

使用Jenkins部署Vue.js專案

Jenkins是非常流行的持續整合工具。使用Jenkins部署伺服器端應用程式是非常方便的,那麼使用Jenkins部署web前端應用程式效果怎麼樣呢,如果可以使用Jenkins部署,那麼就可以直接從版本庫自動拉取,自動構建,相比傳統方式會省去很多麻煩。 一、準備 伺服器上

中小型的 Node.js 專案目錄

build 構建指令碼 dist 編譯出來的釋出版 docs 文件 examples 示例檔案 src 原始碼 test 測試指令碼 .babelrc Babel 交叉編譯的配置 .eslintrc ESLint 測試配置&n

node.js專案框架搭建

一、使用Node搭建伺服器專案 1.//全域性安裝 express sudo npm install -g express-generator 2.//使用ejs建立工程 express -e NodeTest 3.//進入工程 cd NodeTest 4.//下載專案所需

Node.js專案的package.json配置檔案中的devdependencies 和 dependencies的區別

1、dependencies和devDependencies 具體程式碼如下 "name": "webpack-react-express", "version": "0.2.0", "private": true, "dependencies": {

Ansible部署Node.js,讓你從簡操作

下面我們將要在我們的CentOS6.x伺服器上配置Nodejs,啟動一個簡單的nodejs例項,這個伺服器有很簡單的架構。 開始了,首先建立一個playbook檔案,我們儘量讓它保持簡單。 --- - hosts: all  tasks: 定義一些執行這個playbook的主機,然後下面列出一