如何在远程服务器上启动一个NodeJS进程?

3

我已经创建了一个简单的NodeJS应用程序,现在将其移动到了AWS服务器上。

我可以通过ssh登录到服务器并启动应用程序,但很明显,一旦我关闭终端,进程就停止了。

如何启动我的NodeJS应用程序并在关闭终端后使其持续运行?


1
一个与https://dev59.com/x2cs5IYBdhLWcg3woFXt相同的副本。 - alandarev
谢谢!我确实搜索了这个问题,但没有找到现有的答案。 - michael
2个回答

5
这并不是一个特定的nodejs问题,尽管有特定的解决方案(例如forever)。
一个通用的远程启动linux上任何程序,并在关闭会话后不让其停止运行的解决方案是使用nohup进行启动。这里有一个例子,在这个例子中,我启动了node,并将标准输出和错误输出都重定向到了server.log文件:
nohup node main.js >> server.log 2>&1 < /dev/null & 

4

就像Denys Seguret所说的那样,可以使用forever node软件包来实现。以下是操作步骤 -

通过SSH登录到您的服务器,并以root级别用户全局安装forever

sudo npm install forever --global

要在node脚本上运行forever,请在终端中执行,例如:

forever start server.js

确保通过适当的url在浏览器中启动测试是否正常工作。如果您想检查在服务器上运行的所有forever脚本的状态(您可以在多个脚本上运行它),请运行此命令 -

forever list

要停止forever脚本,您可以运行forever stop,这将停止您的所有forever脚本,或者运行forever stop 0,其中0是forever列表中脚本的索引。

我在所有的gulp应用程序中都使用forever,目前还没有遇到任何问题,但我认为我在远程服务器上没有遇到过任何重大的关闭问题。如果发生这种情况,也许我会对forever的可靠性有更多的话要说。这个答案部分内容来自于网站


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接