每次启动nodejs程序都需要在命令窗口输入命令才能启动,但如果把命令窗口关闭则nodejs程序就会停止运行。在Windows服务器上可以不关闭窗口,但在Linux服务器上通过ssh连接服务器启动nodejs程序后在把ssh客户端关闭,那么nodejs程序也会随之关闭(当然也可以使用nohup命令实现)。
为何不适用nohup来挂起命令?因为如果nodejs崩溃了那么nohup就不能自动重启进程了,还有一个原因就是重启或关闭nodejs进程不方便,至少我觉得。为了解决这个问题,我使用了forever来守护进程,在此就记录一下使用forever实现nodejs后台运行的方法,forever的具体使用以及参数可以到github找。
在Ubuntu中(假设网站路径在/www/nodesite/下),在网站的根目录下创建一个文件start.sh,在文件中添加如下代码并保存:
foreverstart--uidmysiteapp.js
随后只需要cd到/www/nodesite/目录,再执行:sh start.sh即可启动nodejs,
forever stop mysite// 关闭进程forever restart mysite// 重启进程
在Windows中(假设网站路径在D:\www\nodesite\下),在网站的根目录下创建一个文件start.bat,在文件中添加如下代码并保存:
@echooffSET WEBFLODER=d:\www\nodesitechdir/d %WEBFLODER%echoforever starting...forever start --uid mysite app.js
直接双击start.bat文件即可运行