Compute Engine和NodeJS,保持在线状态

Wal*_*anG 2 ssh google-app-engine node.js google-compute-engine sails.js

我已经在“ Compute Engine”上开发了一个使用node.js和sails.js开发的网站,但是要启动它,必须在浏览器的SSH控制台中编写“ node app.js”。但是有一个问题(因为我是Linux和Google Cloud的新手,所以),如果我想让我的Node应用程序保持在线状态,则必须打开SSH窗口,如果我关闭它,Node应用程序将终止,如Ctrl + c 。因此,仅打开活动窗口就没有必要打开计算机。那么,如何在不使用SSH控制台的情况下使NodeJS应用程序保持在线状态?我知道这个问题对某些人来说是不合理的,但是如果您能帮助我,我将不胜感激。谢谢

Jos*_*llo 6

首先,它与Compute Engine或Node.js都不相关。

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

node app.js &
Run Code Online (Sandbox Code Playgroud)

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

但是仅将应用程序发送到后台是没有帮助的。从ssh会话断开连接后,所有启动的程序(后台或前台)都会收到HUP信号,在node.js中,您可以处理该信号,但默认行为是关闭

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

您可以执行以下操作来忽略SIGHUP信号的一件事是运行您的应用程序,如下所示:

nohup node app.js &
Run Code Online (Sandbox Code Playgroud)

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

这将在很早的阶段就为您提供帮助,并有助于开发,但是我建议您不要将这两种东西都用于生产。例如:如果您的应用程序崩溃,则应重新启动。推荐的方法是使用操作系统随附的服务管理器:upstart,systemd,init等。