【问题标题】:How to properly run a local node app in production如何在生产中正确运行本地节点应用程序
【发布时间】:2021-07-05 16:01:42
【问题描述】:

我正在构建一个安装,其中包含一个未连接到 Internet 并将在计算机上本地运行的节点应用程序。我想知道在生产中运行此节点应用程序的最佳方式是什么?我可以简单地运行'node index.js'并且足够好吗?我是否需要以任何特定方式捆绑应用程序或使用类似的东西:https://pm2.keymetrics.io/

由于我没有在传统的托管在线环境中使用节点,我想知道在生产中运行本地节点应用程序的最佳实践是什么。

我应该补充: 我正在使用节点来运行呈现我的 HTML 前端的本地服务器。我还使用节点应用程序通过串行端口与 Arduino 进行通信。最后,我使用 socket.io 将数据从我的节点应用程序发送到前端。

【问题讨论】:

  • 我在 Raspberry Pi 上运行一个节点应用程序,它执行一些家庭自动化控制。我使用forever 启动它,这样如果它崩溃了,它会自动重启。而且,为了防止系统中的任何泄漏(内存、文件等),我让应用程序在每晚凌晨 4 点自动退出,然后永远自动重新启动它。该应用程序还配置为在 Raspberry Pi 启动时启动(用于断电恢复)。您不必那样做,但这个应用程序已经运行了 5 年。

标签: javascript node.js local production


【解决方案1】:

据我所知,无论应用程序是托管在云端还是本地,实际上都不会更改启动应用程序所需的命令。

例如,即使您要将应用程序部署到 Heroku 之类的服务,它仍会运行您的启动命令(可能是 npm start),这可能会使用 node <file>.js 启动您的服务器。

由于您只是在本地托管它,是的,您只需使用 node <file>.js 启动它。你说它不会连接到互联网,所以我假设没有用户会访问应用程序的端点。如果是这样,那你就可以走了。否则,您可能需要使用 NgrokVortex 等服务将来自您网络外部的任何请求代理到您自己的网络中运行您的应用程序的端口。

要注意的另一件事是,如果您希望在更改任何代码时重新启动应用,请考虑使用 nodemon 包,它可以帮助您实现这一目标。但同样,该包仍然运行node <file.js> 命令。

【讨论】:

  • 所以如果我只需要担心应用程序在生产中崩溃,我可以使用 nodemon 重新启动服务器还是应该使用 pm2 来处理?
  • 您可能想查看 pm2,但在我看来,如果您将代码包装在 try-catch 块中(这应该是为了获得好的代码),您的应用程序不一定会在生产中崩溃。但是,可能还有其他原因,所以如果您想安全,我建议您使用 pm2。 Nodemon 主要用于开发目的,尽管您可以通过一些研究将其配置为自动重启。
猜你喜欢
  • 2021-07-12
  • 1970-01-01
  • 1970-01-01
  • 2020-10-10
  • 1970-01-01
  • 2013-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多