繁体   English   中英

在生产中运行 NodeJS 服务器

[英]Running NodeJS server in production

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

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

你可以考虑foreversupervisor

检查博客文章。

您也可以使用泊坞窗。 您可以创建多个 docker 容器来运行您的节点服务器。 现在,在主机的 nginx 级别,您可以进行负载平衡配置,将流量均等地路由到不同的 docker 节点容器,这将提高您的可用性和可扩展性,在流量较大的情况下,您只需要增加 docker 节点容器的数量和在需要的时候。 我猜最初 2 个容器足以处理流量(尽管取决于您的用例)。

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

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

您可以从这里了解 docker。

您还可以从此处阅读有关 nginx 中的负载平衡的信息

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

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

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

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

  • 应用程序的工作环境在整个工作流程中保持一致。 这意味着应用程序运行完全相同
    开发人员、测试人员和客户,无论是在开发、登台还是
    生产服务器。 简而言之,Docker 是针对
    软件开发中的古老回应:“奇怪,它对我有用!”

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM