如何在 aws ec2(linux 实例)上部署 Next js

Posted

技术标签:

【中文标题】如何在 aws ec2(linux 实例)上部署 Next js【英文标题】:How to deploy Next js on aws ec2 (linux instance) 【发布时间】:2019-04-04 09:51:04 【问题描述】:

我已经创建了下一个 js 应用程序。

现在我正在尝试将它部署在 AWS ec2 实例上。 我可以像在我的开发服务器(本地服务器)上一样轻松地将它部署在 ec2 实例上(我将所有代码库移动到 ec2 并运行 npm install、npm run build 和 npm run start)。

但问题是,在我们在我的应用程序上部署任何更新(添加新功能)之后,假设如果我遵循与上述相同的过程,在这种情况下,我需要停止节点服务器,但我没有不想阻止它。

所以请给我一个替代方案,以便它可以轻松部署并更新我的应用程序。

【问题讨论】:

【参考方案1】:

另外,你也可以使用 Docker 和 Kubernetes。

通过使用 Docker,您在部署之前已经准备好 Docker 镜像(在镜像中执行 npm install 和 build),然后只需推送镜像,关闭旧容器并重新运行最新的 docker 镜像(将花费更少不到一分钟的时间重新部署您的应用程序)。

通过使用 Kubernetes 和 Docker,您可以重新部署您的应用,Kubernetes 会将请求重定向到另一个运行您的应用的节点。因此部署期间的停机时间为 0。

另一个重要的关键词“0停机部署”

【讨论】:

是否可以使用 docker 和 Kurbernetes 进行回滚 是的,通过在 docker 标签中添加版本号,您可以回滚到您拥有的任何 docker 映像版本。【参考方案2】:

您必须停止节点服务器。如果您需要让用户没有发现服务器已关闭。您可以查看蓝/绿部署、滚动更新或金丝雀。

【讨论】:

以上是关于如何在 aws ec2(linux 实例)上部署 Next js的主要内容,如果未能解决你的问题,请参考以下文章

如何在单个 AWS EC2 实例上的 Node 中部署多个微服务?

AWS - ECS - 如何在现有 ECS(带有 1 个 EC2)实例上重新部署更新的 Docker 映像?

AWS EC2 Windows实例无法通过公共IP访问

我们如何在aws ec2 linux实例的不同端口安装多个apache服务器

AWS Cloudformation 上的 UserData 未部署在 EC2 实例上

在 AWS 中的 SUSE Linux EC2 实例上安装 SSM 代理和角色确保启动