1. 程式人生 > >生產環境下通過pm2部署node簡單例項

生產環境下通過pm2部署node簡單例項

首先應該有一個要部署的專案

(1)建立一個資料夾project
(2)在資料夾project中建立app.js檔案
(3)app.js內容如下
const http=require('http')
http.createServer(function(req,res){
res.writeHead(200,{'Content-Type':'text/plain'})
res.end('8081')
}).listen(8081)
(4)將project資料夾通過Xftp放到/root檔案目錄下

部署的大致流程(我們公司使用是Xshell)

(1)使用Xshell連線到生產環境
(2)wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash      //安裝nvm
(3) nvm install v6.10.2     //安裝node6.10.2
(4)nvm use v6.10.2     //使用v6.10.2
(5)nvm alias default v6.10.2    //讓預設版本就是v6.10.2
(6)node -v //檢視node版本
(7)npm install -g cnpm --registry=https://registry.npm.taobao.org //安裝cnpm
(8)cnpm i pm2  -g //安裝pm2模組(i是install的縮寫)
(9) cd /root/project     //進入到專案所在資料夾
(10)pm2 start app.js  //通過pm2啟動專案,專案就啟動成功了

專案啟動後常用的命令

pm2  list      //檢視當前啟動的程序
pm2 show 0      //檢視某個程序的詳細資訊(0是list出表中的id值)
pm2 logs    //檢視全部日誌(也可以根據第二步列出的詳細資訊檢視某個程序的日誌)

pm2 restart 0           //重啟指定的程序
pm2 restart 0           //重啟指定的程序
pm2 stop 0              //停止指定的程序
pm2 stop all            //停止所有程序
pm2 reload all         //0秒停機過載程序 (用於 NETWORKED 程序)
pm2 delete 0            //殺死指定的程序
pm2 delete all          //殺死全部程序

線上訪問

開啟瀏覽器訪問0.0.0.0:8081就可以頁面返回了8081說明部署成功(0.0.0.0替換成你的生產環境地址)

其他參考資料

更多內容可以看這篇資料http://www.linuxprobe.com/nodejs-pm2-sample.html

一、簡介
pm2是一個帶有負載均衡功能的應用程序管理器,類似有Supervisor,forever,詳細引數見官網:http://pm2.keymetrics.io

二、安裝
Linux Binaries下載地址:https://nodejs.org/dist

cd oneinstack/src
wget https://nodejs.org/dist/v4.2.4/node-v4.2.4-linux-x64.tar.gz
tar xzf node-v4.2.4-linux-x64.tar.gz
cp node-v4.2.4-linux-x64/bin/node /usr/local/bin/
cp -R node-v4.2.4-linux-x64/lib/node_modules /usr/local/lib/
ln -s /usr/local/lib/node_modules/npm/bin/npm-cli.js /usr/local/bin/npm
npm install 
[email protected]
-g #安裝最新版本pm2模組 PS: 如果你的主機無法連線公網,先找到能連公網的主機安裝上面的方法安裝pm2,然後拷貝到你要安裝的主機,拷貝如下目錄: /usr/local/bin/node /usr/local/lib/node_modules 再建立相關軟連線即可 三、PM2常用命令 假設你現在已經寫好了一個app.js的檔案,需要啟動,你可以使用pm2進行管理 1. 啟動 # pm2 start app.js # pm2 start app.js --name my-api #my-api為PM2程序名稱 # pm2 start app.js -i 0 #根據CPU核數啟動程序個數 # pm2 start app.js --watch #實時監控app.js的方式啟動,當app.js檔案有變動時,pm2會自動reload 2. 檢視程序 # pm2 list # pm2 show 0 或者 # pm2 info 0 #檢視程序詳細資訊,0為PM2程序id 3. 監控 # pm2 monit 4. 停止 # pm2 stop all #停止PM2列表中所有的程序 # pm2 stop 0 #停止PM2列表中程序為0的程序 5. 過載 # pm2 reload all #過載PM2列表中所有的程序 # pm2 reload 0 #過載PM2列表中程序為0的程序 6. 重啟 # pm2 restart all #重啟PM2列表中所有的程序 # pm2 restart 0 #重啟PM2列表中程序為0的程序 7. 刪除PM2程序 # pm2 delete 0 #刪除PM2列表中程序為0的程序 # pm2 delete all #刪除PM2列表中所有的程序 8. 日誌操作 # pm2 logs [--raw] #Display all processes logs in streaming # pm2 flush #Empty all log file # pm2 reloadLogs #Reload all logs 9. 升級PM2 # npm install [email protected] -g #安裝最新的PM2版本 # pm2 updatePM2 #升級pm2 10. 更多命令引數請檢視幫助 # pm2 --help 四、PM2目錄結構 預設的目錄是:當前用於的家目錄下的.pm2目錄(此目錄可以自定義,請參考:五、自定義啟動檔案),詳細資訊如下: $HOME/.pm2 #will contain all PM2 related files $HOME/.pm2/logs #will contain all applications logs $HOME/.pm2/pids #will contain all applications pids $HOME/.pm2/pm2.log #PM2 logs $HOME/.pm2/pm2.pid #PM2 pid $HOME/.pm2/rpc.sock #Socket file for remote commands $HOME/.pm2/pub.sock #Socket file for publishable events $HOME/.pm2/conf.js #PM2 Configuration 五、自定義啟動檔案 建立一個test.json的示例檔案,格式如下: { "apps": { "name": "test", "cwd": "/data/wwwroot/nodejs", "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 } } 引數說明: apps:json結構,apps是一個數組,每一個數組成員就是對應一個pm2中執行的應用 name:應用程式的名稱 cwd:應用程式所在的目錄 script:應用程式的指令碼路徑 exec_interpreter:應用程式的指令碼型別,這裡使用的shell,預設是nodejs min_uptime:最小執行時間,這裡設定的是60s即如果應用程式在60s內退出,pm2會認為程式異常退出,此時觸發重啟max_restarts設定數量 max_restarts:設定應用程式異常退出重啟的次數,預設15次(從0開始計數) exec_mode:應用程式啟動模式,這裡設定的是cluster_mode(叢集),預設是fork error_file:自定義應用程式的錯誤日誌檔案 out_file:自定義應用程式日誌檔案 pid_file:自定義應用程式的pid檔案 watch:是否啟用監控模式,預設是false。如果設定成true,當應用程式變動時,pm2會自動過載。這裡也可以設定你要監控的檔案。 六、例項展示 已上面的test.json為例 # cat > /data/wwwroot/nodejs/test.sh <> 1.log sleep 5 done EOF 然後執行如下命令: # chmod +x test.sh #新增執行許可權 # pm2 start test.json #啟動,如下圖: nodejs pm2的簡單應用nodejs pm2的簡單應用 # pm2 list #檢視pm2程序,如下圖: nodejs pm2的簡單應用nodejs pm2的簡單應用

公司以前使用的是supervisor,如果你想使用這個可以參考下面這篇文章

http://blog.csdn.net/xyang81/article/details/51555473


相關推薦

生產環境通過pm2部署node簡單例項

首先應該有一個要部署的專案 (1)建立一個資料夾project (2)在資料夾project中建立app.js檔案 (3)app.js內容如下 const http=require('http') http.createServer(function(req,res){ r

Golang學習-第一篇 Golang的簡單介紹及Windows環境安裝、部署

需要 簡單 電腦 pan 生成文件 多核 -- pear () 序言 這是本人博客園第一篇文章,寫的不到位之處,希望各位看客們諒解。 本人一直從事.NET的開發工作,最近在學習Golang,所以想著之前學習的過程中都沒怎麽好好的將學習過程記錄下來。深感惋惜! 現在將Gola

SpringCloud從入門到進階(四)——生產環境Eureka的完全分布式部署

分開 -s rip linux mas 此外 實例名 leo 版本 內容   由於前兩節的內容我們知道,開啟了preferIpAddress後,Eureka的偽分布式部署會提示replica不可用。這一節我們講解如何在生產環境下部署完全分布式的Eureka集群,確保開啟了p

SpringCloud從入門到進階(四)——生產環境Eureka的完全分散式部署

內容   由於前兩節的內容我們知道,開啟了preferIpAddress後,Eureka的偽分散式部署會提示replica不可用。這一節我們講解如何在生產環境下部署完全分散式的Eureka叢集,確保開啟了preferIpAddress後replica的可用性。 版本   IDE:IDEA 2017.2.

Golang的簡單介紹及Windows環境安裝、部署

Golang安裝 Golang下載:https://golang.google.cn/dl/。 作業系統 包名 Windows go1.4.windows-amd64.msi Linux

Linux生產環境部署Django+Nginx+uwsgi

    本文是在上一篇 “ Linux作業系統下部署Jenkins環境,資料遷移(備機部署)以及主從節點的配置 ”基礎上進行延伸,Jenkins+Django+Nginx+uWSGI才是一套解決方案。     之所採用Djan

雲主機-生產環境離線安裝Docker部署應用

離線安裝Docker、配置Docker以及使用Docker 根據核心版本,下載Docker離線安裝包 安裝上序下載的rpm包:rpm -ivh *.rpm 安裝完成之後,檢測是否安裝成功,

Linux Shell腳本生產環境安全地刪除文件

rm safe 腳本編寫背景 無論是生產環境、測試環境還是開發環境,經常需要使用rm命令刪除&批量一些“重要”目錄下的文件。按照Linux的哲學“小即是美”(一個程序只做一件事)+“用戶清楚自己做什麽”(用戶知道自己想要什麽,也明白自己在做什麽,並且會為自己的行為負責),那麽用戶在執行r

記錄CentOS環境將Solr部署到Tomcat

ont ins ces /usr p s cal 解壓 bin col 首先切換到usr/local目錄 cd /usr/local/ 下載tomcat到local目錄 wget http://archive.apache.org/dist/tomcat/tomcat

一次生產環境MongoDB備份還原數據

刪除 命令格式 type 庫存 功能 字符 導出文件 信息 fields 最近開發一個版本的功能當中用到了MongoDB分頁,懶於造數據,於是就研究了下從生產環境上導出數據到本地來進行測試。 研究了一下,發現MongoDB的備份還原和MySQL語法還挺類似,下面請看詳細介紹

生產環境使用Nginx+uwsgi部署Diango項目

download 不用 true 項目部署 web服務器 world edi 目錄 require 環境:CentOS6.5 + Nginx1.11.5 + Python3.5.2 1. 安裝基礎軟件包 yum install -y zlib-deve

如何在生產環境實現每天自動備份mysql數據庫

mysql mysql備份 自動備份mysql mysql數據庫備份 甘兵 1、描述 我相信很多朋友在工作都都會有這種需求,老板或領導讓你每天都要備份mysql數據庫,你該如何實現呢,是每天到一定的時間在服務器上敲一遍mysql的備份命令,還是想寫個腳本,定時定點的自動備份呢?我相信

利用forever和pm2部署node.js

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

在Linux環境使用Apache部署ASP.NET Core

tgt tab dot sce aaa target 部署 AI startup 在前幾篇文章中我們一起探討了如何在Linux環境中安裝ASP.NET Core運行時環境及將ASP.NET Core項目部署在Jexus中,這篇文章中我們將探討如何將ASP.NET Core部

生產環境hadoop HA集群及Hbase HA集群配置

自動切換 value 下載 shared 第一次 borde sla com 結果 一、環境準備操作系統版本:centos7 64位hadoop版本:hadoop-2.7.3hbase版本:hbase-1.2.41、機器及角色IP角色192.168.11.131Nameno

Maven_生產環境開發對Maven的需求

手動 不同 保存 拆分 多個 需要 開發 復制 strong 目前技術開發時存在的問題:   一個項目就是一個工程     如果一個項目非常龐大,就不適合繼續使用package來劃分模塊。最好是每一個模塊對應一個工程,利於分工協作。     借助Maven就可以將一個項目拆

Linux環境通過rpm安裝gcc的順序

首先檢視Linux版本: [[email protected] ~]# lsb_release -a LSB Version: :core-3.1-amd64:core-3.1-ia32:core-3.1-noarch:graphics-3.1-amd64:graphics-3

java生產環境記憶體調優

Tomcat 效能監控與調優 Nginx 效能監控與調優 JVM 層 GC 調優 JAVA程式碼層調優 1.JVM的引數型別 標準引數(各版本中保持穩定) -help -server -client -version -showversion -cp -classpath

pm2部署node專案

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

SSM 環境的 AOP 配置與簡單應用

一、需要匯入的 jar 包 <!-- Spring AOP 日誌管理需要匯入的包 --> <dependency> <groupId>org.aspectj</groupId> <