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

Posted

技术标签:

【中文标题】如何在远程服务器上启动 NodeJS 进程?【英文标题】:How to start a NodeJS process on a remote server? 【发布时间】:2014-06-01 12:13:47 【问题描述】:

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

我可以通过 ssh 进入服务器并启动应用程序,但很明显,只要我关闭终端,进程就会停止。

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

【问题讨论】:

***.com/questions/12701259/…的副本 谢谢!我确实搜索过这个问题,但看不到现有的问题。 【参考方案1】:

就像 Denys Seguret 所说,这可以使用永久节点包来完成。方法如下 -

SSH 到您的服务器并以 root 级用户身份永久安装

sudo npm install forever --global

要在节点脚本上永久运行,请在终端中执行,同时在与 server.js 相同的目录中,如下所示 -

forever start server.js

确保通过在适当的网址启动浏览器来测试其是否正常工作。如果你想检查你在服务器上运行的所有永久脚本的状态(你可以在多个脚本上运行它)运行这个命令 -

forever list

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

我在我所有的 gulp 应用程序上都使用了 forever,还没有遇到任何问题,但我认为我的远程服务器没有遇到任何重大的关闭问题。也许如果发生这种情况,我会对永远的可信度有更多话要说。这个答案的一些功劳来自这个website。

【讨论】:

【参考方案2】:

这不是特定的 nodejs 问题,尽管有特定的解决方案(例如forever)。

在 linux 上远程启动任何程序并且在关闭会话时不让它死掉的通用解决方案是使用 nohup 启动它。这是我启动节点并将标准输出和错误输出重定向到server.log 文件的示例:

nohup node main.js >> server.log 2>&1 < /dev/null & 

【讨论】:

以上是关于如何在远程服务器上启动 NodeJS 进程?的主要内容,如果未能解决你的问题,请参考以下文章

Android Service的两种启动方式

如何使用 C# 在远程机器上启动/停止进程?

如何使用 perl 和 Net::OpenSSH 在远程机器上启动后台进程?

使用 SSH 在远程服务器上启动后台进程,并退出会话

远程节点保持进程活着

为啥电脑输入开机密码后,显示远程桌面服务正忙,开不了机