每天进步一点点:让node.js 应用一直运行的方法

in cn •  6 years ago 

这两天和一个node.js应用较劲,其实我这玩意我的外行中外行,七窍通了六窍——一窍不通,不过慢慢学呗。


(图源 :pixabay)

昨天好不容易把程序运行起来了,浏览器也可以访问了,大松了一口气,可是早晨起来再一试,怎么访问不了啦?再一想,这也合理,我的ssh终端窗口都死掉了,程序当然一起死掉啦。

但是我又不能一直开着终端窗口啊,那如何才能让node.js程序一直运行呢?平时遇到这样的情况,我常用的方法有nohup以及screen等,想必应该也好用,让我来试试。

nohup

nohup 使用起来很简单了,只需在执行的指令之前加上nohup即可。

比如待执行的命令为:node app.js 那么使用nohup来运行的指令如下:

nohup node app.js

执行后会提示:

nohup: ignoring input and appending output to 'nohup.out'

执行后试了一下浏览器访问,一切正常。关掉ssh窗口,再试浏览器访问,擦,访问不到了,说明使用nohup是不可行的。

(网上有人用nohup执行node.js程序没任何问题,所以不成功的原因可能和我运行的程序有关,懒得深究了)

screen

既然nohup失败了,我只好寄希望于screen了。

screen使用起来超级简单,先用如下命令开一个虚拟窗口

screen

然后正常执行命令即可

node app.js

用浏览器测试访问,一起正常,关闭SSH终端窗口再测试访问,一切正常,说明使用screen让node.js一直运行是可行的。

forever

网上搜索较为常用的方式是使用forever,使用之前需要先安装forever,一般是选择全局安装

sudo npm install -g forever

因为我不打算全局使用,所以只安装到项目目录:

npm install forever

然后使用如下指令运行:

node_modules/forever/bin/forever start app.js

然而关掉终端窗口后,浏览器浏览器依旧可以正常访问,看来这个是行得通的。

PM2

另外一种更高级的方式据说是PM2,全局安装的方式如下:

sudo npm install pm2 -g

我还是安装在项目目录内:

npm install pm2

启动应用:

node_modules/pm2/bin/pm2 start api.js

关闭SSH终端窗口测试浏览器访问,一切正常。据说这个PM2还支持很多高级功能,比如说聚簇模式(Cluster Mode: Node.js Load Balancing & Zero Downtime Reload),这个暂时就不测试啦,感兴趣的同学自己去文末链接里探索吧。

相关链接


Vote For Me As Witness
https://steemit.com/~witnesses type in oflyhigh and click VOTE

Vote @oflyhigh via Steemconnect
Thank you!

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

Thank you so much for participating in the Partiko Delegation Plan Round 1! We really appreciate your support! As part of the delegation benefits, we just gave you a 3.00% upvote! Together, let’s change the world!

  ·  6 years ago 

nohup node app.js &
需要在background运行才会不中断

Posted using Partiko iOS

之前试过了,也不行的,不知道为啥。

收藏了,实用

Posted using Partiko Android