一尘不染

如何使node.js应用程序永久运行?

node.js

在Debian服务器上,我安装了Node.js。我了解如何使用以下命令行从腻子启动应用程序:

node /srv/www/MyUserAccount/server/server.js

并通过地址50.51.52.53:8080(IP和端口)访问它。

但是,一旦我关闭腻子,那我就无法到达地址50.51.52.53:8080了。

如何使Node.js应用程序永久运行?

如您所料,我是Linux和Node.js的初学者。


阅读 355

收藏
2020-07-07

共1个答案

一尘不染

尽管其他答案解决了OP的问题,但它们都是过大的,不能解释为什么他或她遇到此问题。

关键是这一行,“我关闭油灰,然后我无法到达地址”

当您在Putty上登录到远程主机时,您已经启动了SSH linux进程,并且从该SSH会话键入的所有命令都将作为该进程的子进程执行。

您的问题是,当您关闭Putty时,您将退出SSH会话,该会话会终止该进程以及所有活动的子进程。关闭腻子时,会无意中杀死服务器,因为它是在 前台运行的
。为避免此行为,请在命令后附加&来在 后台 运行服务器:

node /srv/www/MyUserAccount/server/server.js &

这里的问题是缺乏Linux知识,而不是有关节点的问题。有关更多信息,请访问:http : //linuxconfig.org/understanding-
foreground-and-background-linux-
processes

更新:

正如其他人提到的那样,节点服务器在退出终端时可能仍然会死亡。我遇到的一个常见问题是,即使节点进程在bg中运行,它也是stdout,stderr仍然指向终端。这意味着,如果节点服务器写入console.log或console.error,它将收到中断的管道错误并崩溃。可以通过管道处理过程的输出来避免这种情况:

node /srv/www/MyUserAccount/server/server.js > stdout.txt 2> stderr.txt &

如果问题仍然存在,那么您应该研究诸如 tmuxnohup 之类的
东西,它们比特定于节点的解决方案还要健壮,因为它们可用于运行所有类型的进程(数据库,日志服务,其他语言)。

一个可能导致服务器退出的常见错误是,在运行服务器后,nohup node your_path/server.js &您只需单击一下即可关闭Putty终端。您应该改用exitcommand,然后节点服务器将启动并运行。

2020-07-07