为了账号安全,请及时绑定邮箱和手机立即绑定

如果node js 停止了该怎么自动起动?

如果node js 停止了该怎么自动起动?

繁星淼淼 2019-11-13 15:11:25
node js 停止了怎么 自动起动
查看完整描述

3 回答

?
墨色风雨

TA贡献1853条经验 获得超6个赞

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同步代码呢,那它是不是就不适用了。所以说,具体使用哪种方式还要看自己的开发环境是怎样的。



查看完整回答
反对 回复 2019-11-17
  • 3 回答
  • 0 关注
  • 1220 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信