pm2 部署 node

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里。如下:

image.png

通過npm run pm2來啟動缺亮。

啟動任務(wù)命令:

          "pm2 start py文件或其他文件  -x --interpreter 程序如python"
          "pm2 start scrapy_biying_ask.py -x --interpreter python"
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末翁涤,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子萌踱,更是在濱河造成了極大的恐慌葵礼,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件并鸵,死亡現(xiàn)場離奇詭異鸳粉,居然都是意外死亡,警方通過查閱死者的電腦和手機园担,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門届谈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來枯夜,“玉大人,你說我怎么就攤上這事艰山『ⅲ” “怎么了?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵曙搬,是天一觀的道長摔吏。 經(jīng)常有香客問我,道長纵装,這世上最難降的妖魔是什么征讲? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮橡娄,結(jié)果婚禮上诗箍,老公的妹妹穿的比我還像新娘。我一直安慰自己挽唉,他們只是感情好滤祖,可當(dāng)我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著橱夭,像睡著了一般氨距。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上棘劣,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天俏让,我揣著相機與錄音,去河邊找鬼茬暇。 笑死首昔,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的糙俗。 我是一名探鬼主播勒奇,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼巧骚!你這毒婦竟也來了赊颠?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤劈彪,失蹤者是張志新(化名)和其女友劉穎竣蹦,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體沧奴,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡蜀细,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年乱陡,在試婚紗的時候發(fā)現(xiàn)自己被綠了顶岸。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡她我,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤嚣潜,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站灶芝,受9級特大地震影響郑原,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜夜涕,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望属愤。 院中可真熱鬧女器,春花似錦、人聲如沸住诸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽贱呐。三九已至丧诺,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間奄薇,已是汗流浹背驳阎。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留馁蒂,地道東北人呵晚。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像沫屡,于是被迫代替她去往敵國和親饵隙。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內(nèi)容