运行 生产环境中的 NodeJS 服务器
Running NodeJS server in production
我有一个需要部署的 React + 节点应用程序。我正在使用 nginx 来为我的前端提供服务,但我不确定使用什么来保持我的 nodejs 服务器 运行 在生产中。
该项目托管在 windows VM 上。由于许可证问题,我无法使用 pm2。我不知道 运行 在生产中使用 nodemon 的服务器是否良好。我从未在生产中部署过应用程序,因此我不知道合适的方法。
您可以考虑 forever
或 supervisor
。
检查 this 博客 post 同样。
您也可以使用 docker。您可以创建多个 docker 容器来 运行 您的节点服务器。现在在主机的 nginx 级别,您可以进行负载均衡配置,将流量平均路由到不同的 docker 节点容器,这将提高您的可用性和可扩展性,在繁忙的流量中,您只需要增加 docker 节点容器在需要时。我想最初 2 个容器就足以处理流量(不过取决于您的用例)。
注意:- 您还可以按照@Rajesh Gupta 的建议在 docker 容器内使用 forever
或 supervisor
用于 运行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 更轻、更快。
我有一个需要部署的 React + 节点应用程序。我正在使用 nginx 来为我的前端提供服务,但我不确定使用什么来保持我的 nodejs 服务器 运行 在生产中。
该项目托管在 windows VM 上。由于许可证问题,我无法使用 pm2。我不知道 运行 在生产中使用 nodemon 的服务器是否良好。我从未在生产中部署过应用程序,因此我不知道合适的方法。
您可以考虑 forever
或 supervisor
。
检查 this 博客 post 同样。
您也可以使用 docker。您可以创建多个 docker 容器来 运行 您的节点服务器。现在在主机的 nginx 级别,您可以进行负载均衡配置,将流量平均路由到不同的 docker 节点容器,这将提高您的可用性和可扩展性,在繁忙的流量中,您只需要增加 docker 节点容器在需要时。我想最初 2 个容器就足以处理流量(不过取决于您的用例)。
注意:- 您还可以按照@Rajesh Gupta 的建议在 docker 容器内使用 forever
或 supervisor
用于 运行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 更轻、更快。