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