计算引擎和NodeJS,保持在线

时间:2015-04-20 01:00:33

标签: node.js google-app-engine ssh sails.js google-compute-engine

我已经在“计算引擎”上使用node.js和sails.js开发了一个网站,但要启动它,我必须在浏览器的SSH控制台中编写“node app.js”。但是有一个问题(因为我不熟悉Linux和Google Cloud :)),如果我希望我的Node应用程序保持在线,则必须打开SSH窗口,如果我关闭,Node应用程序将终止,如Ctrl + c 。所以打开我的电脑是没有意义的,只是为了拥有活动窗口。那么,如何在没有SSH控制台的情况下保持我的NodeJS应用程序在线?我知道这个问题对某些人来说是不合逻辑的,但如果你帮助我,我将不胜感激。感谢

3 个答案:

答案 0 :(得分:4)

首先,它与Compute Engine和Node.js无关。

您提到,如果您按ctrl+c并且这是正确的,应用程序将会终止,因为您正在前景中运行应用程序而不是后台。要在后台运行您的应用程序,您可以像这样启动您的应用程序:

node app.js &

或者您可以使用node app.js启动,然后按ctrl+z

但只是将应用程序发送到后台并不会有帮助。一旦断开与ssh会话的连接,所有启动的程序(后台或前台)都将收到HUP信号,在node.js中你可以处理该信号但是默认behaviour is to close

  

在非Windows平台上,SIGHUP的默认行为是终止节点

忽略SIGHUP信号可以做的一件事就是按照以下方式运行你的应用程序:

nohup node app.js &

如果这样做,即使关闭ssh会话,您的应用程序也会继续运行。另一种实现此目的的方法是使用screen

这将在很早的阶段和发展中帮助你,但我不建议不要将这些东西用于生产。例如:如果您的应用程序崩溃,则应重新启动。推荐的方法是使用操作系统附带的服务管理器:upstart,systemd,init,仅举几例。

答案 1 :(得分:1)

您可以使用SSH窗口将永远模块(https://www.npmjs.com/package/forever)安装到Google计算引擎中。

npm install forever -g

然后,在节点服务器目录中,永久使用服务器。

forever start [YOUR_SERVER_FILE.js]

现在,如果您关闭SSH窗口,则您的节点服务器仍在运行!

祝你好运!

答案 2 :(得分:0)

最好的解决方案是使用名为forever的模块: https://www.npmjs.com/package/forever

您可以这样使用它: 永远启动your_script.js