我有一个需要部署的react + node应用程序。我正在使用nginx服务于我的前端,但是我不确定使用什么来保持我的nodejs服务器在生产中运行。
该项目托管在Windows VM上。由于许可证问题,我无法使用pm2。我不知道在生产环境中使用nodemon运行服务器是否好。我从未在生产中部署过应用程序,因此我不知道适当的方法。
答案 0 :(得分:2)
您也可以使用docker。您可以创建多个将运行您的节点服务器的Docker容器。现在,在主机的nginx级别上,您可以进行负载平衡配置,该配置会将流量平均路由到不同的docker节点容器,这将提高可用性和可伸缩性。在繁忙的情况下,您只需要增加docker节点容器的数量即可,在需要的时候。我猜最初两个容器足以应付流量(不过取决于您的用例)。
注意:-您也可以按照docker容器中@Rajesh Gupta的建议使用forever
或supervisor
来运行节点服务器。为此,我们使用PM2。
如果您有数据库,则可以为该数据库创建一个单独的docker容器,并将其映射到主机中的卷。
您可以从here了解有关docker的信息。
此外,您还可以从here阅读有关nginx中的负载平衡的信息。
进一步要提高可用性,您可以在nginx和docker容器之间添加一个缓存层。 Varnish是迄今为止我使用过的最好的缓存服务。
PS:-我们使用类似但更高级的架构来运行我们的电子商务应用程序,该应用程序每天生成5-10k个订单。因此,这是一个经过测试的停机时间为零的方法。
答案 1 :(得分:1)
您可以考虑使用forever
或supervisor
。
在同一页上查看this博客文章。
答案 2 :(得分:1)
尝试对整个应用(包括数据库,缓存服务器(如果有)等)进行docker化。 以下是一些示例原因:
您可以在任何一个平台上启动功能全面的开发环境 支持Docker的计算机;您不必安装库, 依赖项,下载程序包,配置文件混乱等。
应用程序的工作环境在整个过程中保持一致
整个工作流程。这表示该应用的运行完全相同
开发人员,测试人员和客户,无论是在开发,暂存还是在
生产服务器。简而言之,Docker是
的对策
在软件开发中的古老回应:“奇怪,它适用于
我!”
每个应用程序都需要一个特定的工作环境:预安装的应用程序,依赖项,数据库以及特定版本中的所有内容。 Docker容器允许您创建这样的环境。但是,与VM相反,该容器不能容纳整个操作系统-仅包含应用程序,依赖项和配置。这使Docker容器比常规VM更加轻巧和快速。