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

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

这两天和一个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!

This page is synchronized from the post: ‘每天进步一点点:让node.js 应用一直运行的方法’

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×