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

时间:2019-06-28 08:22:37

标签: node.js reactjs nginx production-environment

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

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

3 个答案:

答案 0 :(得分:2)

您也可以使用docker。您可以创建多个将运行您的节点服务器的Docker容器。现在,在主机的nginx级别上,您可以进行负载平衡配置,该配置会将流量平均路由到不同的docker节点容器,这将提高可用性和可伸缩性。在繁忙的情况下,您只需要增加docker节点容器的数量即可,在需要的时候。我猜最初两个容器足以应付流量(不过取决于您的用例)。

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

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

您可以从here了解有关docker的信息。

此外,您还可以从here阅读有关nginx中的负载平衡的信息。

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

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

答案 1 :(得分:1)

您可以考虑使用foreversupervisor

在同一页上查看this博客文章。

答案 2 :(得分:1)

尝试对整个应用(包括数据库,缓存服务器(如果有)等)进行docker化。 以下是一些示例原因:

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

  • 应用程序的工作环境在整个过程中保持一致 整个工作流程。这表示该应用的运行完全相同
    开发人员,测试人员和客户,无论是在开发,暂存还是在
    生产服务器。简而言之,Docker是
    的对策 在软件开发中的古老回应:“奇怪,它适用于 我!”

每个应用程序都需要一个特定的工作环境:预安装的应用程序,依赖项,数据库以及特定版本中的所有内容。 Docker容器允许您创建这样的环境。但是,与VM相反,该容器不能容纳整个操作系统-仅包含应用程序,依赖项和配置。这使Docker容器比常规VM更加轻巧和快速。