运行 生产环境中的 NodeJS 服务器

Running NodeJS server in production

我有一个需要部署的 React + 节点应用程序。我正在使用 nginx 来为我的前端提供服务,但我不确定使用什么来保持我的 nodejs 服务器 运行 在生产中。

该项目托管在 windows VM 上。由于许可证问题,我无法使用 pm2。我不知道 运行 在生产中使用 nodemon 的服务器是否良好。我从未在生产中部署过应用程序,因此我不知道合适的方法。

您可以考虑 foreversupervisor

检查 this 博客 post 同样。

您也可以使用 docker。您可以创建多个 docker 容器来 运行 您的节点服务器。现在在主机的 nginx 级别,您可以进行负载均衡配置,将流量平均路由到不同的 docker 节点容器,这将提高您的可用性和可扩展性,在繁忙的流量中,您只需要增加 docker 节点容器在需要时。我想最初 2 个容器就足以处理流量(不过取决于您的用例)。

注意:- 您还可以按照@Rajesh Gupta 的建议在 docker 容器内使用 foreversupervisor 用于 运行ning 节点服务器。为此,我们使用 PM2。

如果您有数据库,那么您可以为数据库创建一个单独的 docker 容器并将其映射到主机中的一个卷。

您可以从 here 了解 docker。

您还可以从 here 了解 nginx 中的负载平衡。

要进一步提高可用性,您可以在 nginx 和 docker 容器之间添加一个缓存层。 Varnish 是迄今为止我用过的最好的缓存服务。

PS:- 我们使用与 运行 我们的电子商务应用程序类似但更高级的架构,该应用程序每天生成 5-10k 个订单。所以这是一种经过测试的方法,停机时间为 0。

尝试将整个应用程序 dockerize,包括数据库、缓存服务器(如果有)等。 以下是一些示例:

  • 您可以在任何平台上启动功能齐全的开发环境 计算机支持Docker;你不必安装库, 依赖项、下载包、混淆配置文件等

  • 应用程序的工作环境在整个过程中保持一致 整个工作流程。这意味着该应用程序运行完全相同
    开发人员、测试人员和客户,无论是开发、登台还是
    生产服务器。简而言之,Docker 是 counter-measure 对于
    age-old 软件开发中的响应:“奇怪,它适用于 我!"

每个应用程序都需要特定的工作环境:pre-installed 应用程序、依赖项、数据库以及特定版本中的所有内容。 Docker 容器允许您创建这样的环境。然而,与 VM 不同的是,容器并不包含整个操作系统——只有应用程序、依赖项和配置。这使得 Docker 容器比常规 VM 更轻、更快。