1 回答

TA貢獻1906條經驗 獲得超3個贊
forever是一種客戶端的工具,可以使用其使NodeJs服務在后臺運行。同樣,也可以檢測文件的改變然后自動重啟NodeJs服務。
forever安裝方式如下
# npm install forever –g
運行上述命令,等待forever安裝完成,然后我們就可以使用forever了。
# forever start app.js
上面的命令就可以開啟NodeJs服務了,此時NodeJs服務已經在后端運行。是不是很簡單。當然,上面的命令是最基本的開啟NodeJs服務。但是僅僅用運行上述命令我們是沒有辦法查看打印信息的。因此,如果我們需要查看打印信息可以將這些信息輸出到日志文件中。其命令如下
# forever –l /log/forever.log –o /log/out.log –e /log/error.log app.js
這樣,我們再使用console.log()等打印的信息就可以在日志文件中查看到了。
最后就是實現修改NodeJs代碼以后服務自動重啟,要使用-w選項。
# forever –l /log/forever.log –o /log/out.log –e /log/error.log –w app.js
這樣,我們就可以達到最終的目的了。
pm2實現NodeJs自動重啟
同樣,和forever一樣,pm2也是一種客戶端的工具,也可以使NodeJs服務在后臺運行。并且可以檢測文件的改變然后自動重啟NodeJs服務。
pm2安裝方式如下
# npm install pm2@latest –g
運行上述命令以后,等待pm2安裝完成。
# pm2 start app.js
開啟NodeJs服務。
# pm2 start –l /log/pm2.log –o /log/out.log –e /log/error.log app.js
將NodeJs的日志和打印的信息以及錯誤信息寫進日志文件中,并開啟NodeJs服務。
# pm2 start –l /log/pm2.log –o /log/out.log –e /log/error.log app.js –watch
上述命令可以檢測文件的改變,然后重新啟動NodeJs服務。
使用是不是很簡單,當然pm2的功能遠不止于此。具體可以參考pm2詳細教程。
下面介紹一種非常規的方式。這種方式是根據自己的開發環境自己寫的。有什么不足的地方還請大家多多指正。
通過svn實現NodeJs的自動重啟
在實際的開發中,我本人使用的是linux服務器。我每次在本地寫完NodeJs代碼以后,通過Svn部署到服務器上。當然,這需要借助svn的鉤子post-commit。也就是通過這個文件來實現NodeJs重啟。
對于svn同步代碼到服務器上,有不清楚的可以參考《Linux服務器svn遠程代碼同步》這篇文章。
下面我們直接奉上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 &
這樣我們就可以實現修改代碼以后自動重啟NodeJs服務了。
以上就是我要對大家介紹的三種方式。當然,這里需要說明一下。使NodeJs自動重啟的方法又很多,它并不是一成不變的,我們完全可以根據自己的開發環境來選擇相應的適合自己的方式。
就像一、二兩種方式,那可以說是通用方式,可以用在不同的環境中。像第三種方式,如果我們是使用svn同步代碼,那就沒有問題。如果我們不是使用的svn同步代碼呢,那它是不是就不適用了。所以說,具體使用哪種方式還要看自己的開發環境是怎樣的。
- 1 回答
- 0 關注
- 990 瀏覽
添加回答
舉報