1 回答

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個(gè)贊
forever是一種客戶端的工具,可以使用其使NodeJs服務(wù)在后臺(tái)運(yùn)行。同樣,也可以檢測(cè)文件的改變?nèi)缓笞詣?dòng)重啟NodeJs服務(wù)。
forever安裝方式如下
# npm install forever –g
運(yùn)行上述命令,等待forever安裝完成,然后我們就可以使用forever了。
# forever start app.js
上面的命令就可以開(kāi)啟NodeJs服務(wù)了,此時(shí)NodeJs服務(wù)已經(jīng)在后端運(yùn)行。是不是很簡(jiǎn)單。當(dāng)然,上面的命令是最基本的開(kāi)啟NodeJs服務(wù)。但是僅僅用運(yùn)行上述命令我們是沒(méi)有辦法查看打印信息的。因此,如果我們需要查看打印信息可以將這些信息輸出到日志文件中。其命令如下
# forever –l /log/forever.log –o /log/out.log –e /log/error.log app.js
這樣,我們?cè)偈褂胏onsole.log()等打印的信息就可以在日志文件中查看到了。
最后就是實(shí)現(xiàn)修改NodeJs代碼以后服務(wù)自動(dòng)重啟,要使用-w選項(xiàng)。
# forever –l /log/forever.log –o /log/out.log –e /log/error.log –w app.js
這樣,我們就可以達(dá)到最終的目的了。
pm2實(shí)現(xiàn)NodeJs自動(dòng)重啟
同樣,和forever一樣,pm2也是一種客戶端的工具,也可以使NodeJs服務(wù)在后臺(tái)運(yùn)行。并且可以檢測(cè)文件的改變?nèi)缓笞詣?dòng)重啟NodeJs服務(wù)。
pm2安裝方式如下
# npm install pm2@latest –g
運(yùn)行上述命令以后,等待pm2安裝完成。
# pm2 start app.js
開(kāi)啟NodeJs服務(wù)。
# pm2 start –l /log/pm2.log –o /log/out.log –e /log/error.log app.js
將NodeJs的日志和打印的信息以及錯(cuò)誤信息寫(xiě)進(jìn)日志文件中,并開(kāi)啟NodeJs服務(wù)。
# pm2 start –l /log/pm2.log –o /log/out.log –e /log/error.log app.js –watch
上述命令可以檢測(cè)文件的改變,然后重新啟動(dòng)NodeJs服務(wù)。
使用是不是很簡(jiǎn)單,當(dāng)然pm2的功能遠(yuǎn)不止于此。具體可以參考pm2詳細(xì)教程。
下面介紹一種非常規(guī)的方式。這種方式是根據(jù)自己的開(kāi)發(fā)環(huán)境自己寫(xiě)的。有什么不足的地方還請(qǐng)大家多多指正。
通過(guò)svn實(shí)現(xiàn)NodeJs的自動(dòng)重啟
在實(shí)際的開(kāi)發(fā)中,我本人使用的是linux服務(wù)器。我每次在本地寫(xiě)完NodeJs代碼以后,通過(guò)Svn部署到服務(wù)器上。當(dāng)然,這需要借助svn的鉤子post-commit。也就是通過(guò)這個(gè)文件來(lái)實(shí)現(xiàn)NodeJs重啟。
對(duì)于svn同步代碼到服務(wù)器上,有不清楚的可以參考《Linux服務(wù)器svn遠(yuǎn)程代碼同步》這篇文章。
下面我們直接奉上shell代碼
#!/bin/bash
export.UTF-8
REPOS="$1"
REV="$2"
SVN=/usr/bin/svn
WEB=/www/nodejs
LOG=/data/home/auto_svn.log
$SVN update $WEB --username uname –password password
#To detect whether the node process exists
ps -A | grep node
#
#The $? is 0 if the node process exists,otherwise 1.
#
#If $? is 0,we will kill the node process.
if [ $? -eq 0 ];then
pid=`ps -A | grep node | awk '{print $1}'`
kill -9 $pid
fi
#Start the node process
nohup node /www/nodejs/index.js >> /log/nodejs.log 2>&1 &
這樣我們就可以實(shí)現(xiàn)修改代碼以后自動(dòng)重啟NodeJs服務(wù)了。
以上就是我要對(duì)大家介紹的三種方式。當(dāng)然,這里需要說(shuō)明一下。使NodeJs自動(dòng)重啟的方法又很多,它并不是一成不變的,我們完全可以根據(jù)自己的開(kāi)發(fā)環(huán)境來(lái)選擇相應(yīng)的適合自己的方式。
就像一、二兩種方式,那可以說(shuō)是通用方式,可以用在不同的環(huán)境中。像第三種方式,如果我們是使用svn同步代碼,那就沒(méi)有問(wèn)題。如果我們不是使用的svn同步代碼呢,那它是不是就不適用了。所以說(shuō),具體使用哪種方式還要看自己的開(kāi)發(fā)環(huán)境是怎樣的。
- 1 回答
- 0 關(guān)注
- 689 瀏覽
添加回答
舉報(bào)