当前位置: 首页 > 面试题库 >

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

季骏祥
2023-03-14
问题内容

在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的初学者。


问题答案:

尽管其他答案解决了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,然后节点服务器将启动并运行。



 类似资料:
  • 问题内容: 我通过SSH连接到远程服务器。然后,我使用Forever启动我的node.js应用程序。一切正常,直到关闭控制台窗口。即使通过ssh关闭连接,如何在远程服务器上永远运行node.js应用程序?我只想启动一个应用程序,然后关闭计算机。我的应用程序应在远程服务器的后台运行。 问题答案: 您可能还需要考虑使用upstart实用程序。它将允许您像服务一样启动,停止和重新启动节点应用程序。可以将

  • 在其他语言中,此任务很简单,只需在Python中使用类似以下内容: 如果没有什么要处理的,我的程序也会想暂停执行。我不希望它用查询使数据库过载。 我正在尝试编写一个应用程序,它将充当后台队列处理器。它将检查数据库,看看队列中是否有任何需要处理的项目,然后该程序将数据写入磁盘上的文件。连接到同一数据库的不同系统的用户会间歇性地将数据添加到数据库中。 我认为永久npm模块不太合适,因为该模块只是检查脚

  • 我想开发一个API,使非程序员能够设置电子邮件属性,例如端口或主机。我发现我可以使用Spring Boot注释@ConfigurationProperties在类中加载属性。 我可以使用getPort检索属性,并使用setPort进行设置。 但是,使用此方法可以计算应用程序中的实际值。使用setPort或setHost时,属性文件不会更改。因此,当我重新启动应用程序时,更改会丢失。是否有办法实际更

  • 问题内容: 如何调试Node.js服务器应用程序? 现在,我主要使用带有以下打印语句的 警报调试 : 必须有更好的调试方法。我知道GoogleChrome浏览器有一个命令行调试器。该调试器也可用于Node.js吗? 问题答案: 节点检查器可以节省一天!从支持WebSocket的任何浏览器中使用它。断点,事件探查器,实时编码等,这真的很棒。 通过以下方式安装: 然后运行:

  • 问题内容: 我想从我的node.js应用程序ping服务器。 那可行吗? 谢谢 问题答案: 您可以用来调用系统ping命令

  • 问题内容: 我意识到其他人也有类似的问题,但这使用的是v2撰写文件格式,对此我一无所获。 我想制作一个非常简单的测试应用程序以与MemSQL一起使用,但是之后无法使卷不被删除。如果我对Docker Docs的理解正确,那么在未明确告知卷的情况下不应删除卷。一切似乎都可以正常工作,但是先下降然后再上升,所有数据都将从数据库中删除。 作为一种好的实践建议,我将单独的memsqldata服务用作单独的数