pm2 部署 node
Node安裝以及部署 去官網(wǎng)下載最新版本勤晚,分兩種一種是源碼墓造,一種是編譯后的文件摊唇。下面是官網(wǎng)下載地址: https://nodejs.org/en/download/current/ 分不同的版本 win linux mac 下載對應(yīng)版本
以linux Windows為例
Linux 下安裝:(方法一)
1.1把下載的tar.gz壓縮包文件解壓
1.2解壓命令: tar -zxvf (壓縮包的名字.tar.gz)
1.3解壓完成后就可以在bin文件中看見 node 和 npm 文件 在當(dāng)前目錄下執(zhí)行./node可以執(zhí)行node客戶端
1.4設(shè)置客戶端:兩條命令 node 和 npm
(kun/mysofltware/node-v0.10.28-linux-x64/bin/node)node文件存放位置根據(jù)自己存放位置而定
ln -s /home/kun/mysofltware/node-v0.10.28-linux-x64/bin/node /usr/local/bin/node
ln -s /home/kun/mysofltware/node-v0.10.28-linux-x64/bin/npm /usr/local/bin/npm
1.5在node目錄下執(zhí)行pwd
獲取node所在的目錄努潘,要把這個目錄添加到PATH環(huán)境變量
1.6執(zhí)行su 輸入密碼切換到root用戶 執(zhí)行命令 vi/etc/profile
1.7在vi 環(huán)境下 點擊 i 進入插入狀態(tài)扛禽,在export PATH的上一行添加如下內(nèi)容 (環(huán)境變量中的內(nèi)容 是以冒號分割的)
PATH=$PATH:/home/kun/mysofltware/node-v0.10.26-linux-x64/bin
編輯完成后按Esc鍵 然后輸入 : wq
按回車保存退出懂牧。
1.8退出vi 侈净,執(zhí)行 source /etc/profile
可以讓變量生效
1.9然后執(zhí)行 echo $PATH
,看看輸出內(nèi)容是否包含自己添加的內(nèi)容
Linux 下安裝:(方法二)
2.1把下載的source code源碼解壓
2.2 以此執(zhí)行以下命令 :
1僧凤、cd node-v0.10
2畜侦、 ./configure
3、Make
4拼弃、Make install cp /usr/local/bin/node /usr/sbin/
Linux 下安裝:(方法三)【不推薦】
apt-get 方式 Sudo apt-get install node.js Sudo apt-get install npm
Windows 下安裝比較簡單下載下一步(不贅述)安裝redis數(shù)據(jù)庫
3.1 下載源碼夏伊,解壓縮后編譯源碼。
wget http://download.redis.io/releases/redis-2.8.3.tar.gz
(http://download.redis.io/releases/redis-2.8.3.tar.gz)
tar xzf redis-2.8.3.tar.gz
cd redis-2.8.3
make
3.2編譯完成后吻氧,在Src目錄下溺忧,有四個可執(zhí)行文件redis-server、redis-benchmark盯孙、 redis-cli和redis.conf鲁森。然后拷貝到一個目錄下。
mkdir /usr/redis
cp redis-server /usr/redis
cp redis-benchmark /usr/redis
cp redis-cli /usr/redis
cp redis.conf /usr/redis
cd /usr/redis
3.3啟動Redis服務(wù) redis-server redis.conf
3.4然后用客戶端測試一下是否啟動成功振惰。
redis-cli redis> set foo bar OK redis> get foo"bar" 代碼上傳
4.1打包:命令
(node_modules .idea .git ne.tar.gz 這些文件不打包減小壓縮包大懈韪取)
tar cvzf ne.tar.gz
./ --exclude=node_modules
--exclude=.idea
--exclude=.git
--exclude=ne.tar.gz
4.2上傳:命令 $ scp ./ne.tar.gz 主機名[@IP](http://cnodejs.org/user/IP)地址:文件夾的路徑
4.3 執(zhí)行命令登錄遠程主機
ssh 主機名[@IP](http://cnodejs.org/user/IP)地址 然后會提示輸入密碼
4.4 cd ls 進入上傳壓縮包所在的目錄 執(zhí)行 tar -zxvf ne.tar.gz
解壓文件
4.5 npm 安裝環(huán)境依賴 執(zhí)行命令 npm install
部署前查詢DNS 端口 root 權(quán)限下
5.1 命令:
$ netstart -ntupl 關(guān)閉防火墻root權(quán)限下
6.1firewall-cmd --zone=public --add-port=9010/tcp --permanent 6.2 firewall-cmd --reload
注:9010處為項目需要開啟的端口號 安裝 pm2
7.1 su 獲得 root 權(quán)限下下載pm2
命令: 全局安裝: npm install pm2 -g
,
啟動: pm2 start www 啟動進程
8.2 安裝開機自啟動 在root 權(quán)限下 執(zhí)行如下命令:
pm2 startup
pm2 save
9.3 一些常用pm2 命令
查看啟動狀況 :pm2 list
重啟項目: pm2 restart
關(guān)閉: pm2 stop
使用命令說明:
參數(shù)說明:
–watch
:監(jiān)聽?wèi)?yīng)用目錄的變化骑晶,一旦發(fā)生變化痛垛,自動重啟。如果要精確監(jiān)聽桶蛔、不見聽的目錄匙头,最好通過配置文件。
-i –instances
:啟用多少個實例仔雷,可用于負載均衡蹂析。如果-i 0或者-i max,則根據(jù)當(dāng)前機器核數(shù)確定實例數(shù)目碟婆。
–ignore-watch
:排除監(jiān)聽的目錄/文件电抚,可以是特定的文件名,也可以是正則竖共。
比如 –ignore-watch=”test node_modules “some scripts”“
-n –name
:應(yīng)用的名稱蝙叛。查看應(yīng)用信息的時候可以用到。
-o –output
:標(biāo)準輸出日志文件的路徑公给。
-e –error
:錯誤輸出日志文件的路徑甥温。
–interpreter
:the interpreter pm2 should use for executing app (bash, python…)锻煌。
比如你用的coffee script來編寫應(yīng)用。
完整命令行參數(shù)列表:地址
pm2 start app.js –watch -i 2
重啟:
pm2 restart app.js
停止:
停止特定的應(yīng)用姻蚓。可以先通過pm2 list獲取應(yīng)用的名字(–name指定的)或者進程id匣沼。
pm2 stop app_name|app_id
如果要停止所有應(yīng)用狰挡,可以:
pm2 stop all
刪除
pm2 stop app_name|app_id
pm2 stop all
查看進程狀態(tài)
pm2 list
自動重啟
pm2 start app.js –watch
*這里是監(jiān)控整個項目的文件
日志查看
除了可以打開日志文件查看日志外,還可以通過pm2 logs來查看實時日志释涛。
pm2 logs
更新pm2
pm2 save
# 記得保存進程狀態(tài)
npm install pm2 -g
pm2 update
附pm2命令:
$ npm install pm2 -g # 命令行安裝 pm2
$ pm2 start app.js -i 4 # 后臺運行pm2加叁,啟動4個app.js
# 也可以把'max' 參數(shù)傳遞給 start
# 正確的進程數(shù)目依賴于Cpu的核心數(shù)目
$ pm2 start app.js --name my-api # 命名進程
$ pm2 list # 顯示所有進程狀態(tài)
$ pm2 monit # 監(jiān)視所有進程
$ pm2 logs # 顯示所有進程日志
$ pm2 stop all # 停止所有進程
$ pm2 restart all # 重啟所有進程
$ pm2 reload all # 0 秒停機重載進程 (用于 NETWORKED 進程)
$ pm2 stop 0 # 停止指定的進程
$ pm2 restart 0 # 重啟指定的進程
$ pm2 startup # 產(chǎn)生 init 腳本 保持進程活著
$ pm2 web # 運行健壯的 computer API endpoint (http://localhost:9615)
$ pm2 delete 0 # 殺死指定的進程
$ pm2 delete all # 殺死全部進程
配置pm2啟動文件
在項目根目錄添加一個processes.json:
內(nèi)容如下:
{ "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結(jié)構(gòu),apps是一個數(shù)組唇撬,每一個數(shù)組成員就是對應(yīng)一個pm2中運行的應(yīng)用
- name:應(yīng)用程序名稱
- cwd:應(yīng)用程序所在的目錄
- script:應(yīng)用程序的腳本路徑
- log_date_format:
- error_file:自定義應(yīng)用程序的錯誤日志文件
- out_file:自定義應(yīng)用程序日志文件
- pid_file:自定義應(yīng)用程序的pid文件
- instances:
- min_uptime:最小運行時間它匕,這里設(shè)置的是60s即如果應(yīng)用程序在60s內(nèi)退出,pm2會認為程序異常退出窖认,此時觸發(fā)重啟max_restarts設(shè)置數(shù)量
- max_restarts:設(shè)置應(yīng)用程序異常退出重啟的次數(shù)豫柬,默認15次(從0開始計數(shù))
- cron_restart:定時啟動,解決重啟能解決的問題
- watch:是否啟用監(jiān)控模式扑浸,默認是false烧给。如果設(shè)置成true,當(dāng)應(yīng)用程序變動時喝噪,pm2會自動重載础嫡。這里也可以設(shè)置你要監(jiān)控的文件。
- merge_logs:
- exec_interpreter:應(yīng)用程序的腳本類型酝惧,這里使用的shell榴鼎,默認是nodejs
- exec_mode:應(yīng)用程序啟動模式,這里設(shè)置的是cluster_mode(集群)晚唇,默認是fork
- autorestart:啟用/禁用應(yīng)用程序崩潰或退出時自動重啟
- vizion:啟用/禁用vizion特性(版本控制)
可以通過pm2 start processes.json
來啟動巫财。
也可以把命令寫在package.json里。如下:
通過npm run pm2
來啟動缺亮。
啟動任務(wù)命令:
"pm2 start py文件或其他文件 -x --interpreter 程序如python"
"pm2 start scrapy_biying_ask.py -x --interpreter python"