生產環境下通過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> <