[英]Running NodeJS server in production
我有一个需要部署的 react + node 应用程序。 我正在使用 nginx 为我的前端提供服务,但我不确定使用什么来保持我的 nodejs 服务器在生产中运行。
该项目托管在 Windows VM 上。 由于许可证问题,我无法使用 pm2。 我不知道在生产中使用 nodemon 运行服务器是否好。 我从未在生产中部署过应用程序,因此我不知道合适的方法。
你可以考虑forever
或supervisor
。
检查此博客文章。
您也可以使用泊坞窗。 您可以创建多个 docker 容器来运行您的节点服务器。 现在,在主机的 nginx 级别,您可以进行负载平衡配置,将流量均等地路由到不同的 docker 节点容器,这将提高您的可用性和可扩展性,在流量较大的情况下,您只需要增加 docker 节点容器的数量和在需要的时候。 我猜最初 2 个容器足以处理流量(尽管取决于您的用例)。
注意:- 您也可以按照@Rajesh Gupta 的建议在 docker 容器中使用forever
或supervisor
来运行节点服务器。 我们为此使用 PM2。
如果您有一个数据库,那么您可以为该数据库创建一个单独的 docker 容器并将其映射到主机中的一个卷。
您可以从这里了解 docker。
为了进一步提高可用性,您可以在 nginx 和 docker 容器之间添加一个缓存层。 Varnish是迄今为止我使用过的最好的缓存服务。
PS:- 我们使用类似但更先进的架构来运行我们的电子商务应用程序,每天生成 5-10k 订单。 所以这是一种经过测试的方法,停机时间为 0。
尝试 dockerize 整个应用程序,包括数据库、缓存服务器(如果有)等。以下是一些示例,原因如下:
您可以在任何支持 Docker 的计算机上启动功能齐全的开发环境; 您不必安装库、依赖项、下载包、弄乱配置文件等。
应用程序的工作环境在整个工作流程中保持一致。 这意味着应用程序运行完全相同
开发人员、测试人员和客户,无论是在开发、登台还是
生产服务器。 简而言之,Docker 是针对
软件开发中的古老回应:“奇怪,它对我有用!”
每个应用程序都需要一个特定的工作环境:预安装的应用程序、依赖项、数据库、特定版本中的所有内容。 Docker 容器允许您创建这样的环境。 然而,与 VM 不同的是,容器并不包含整个操作系统——仅包含应用程序、依赖项和配置。 这使得 Docker 容器比普通 VM 更轻、更快。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.