繁体   English   中英

使用节点后端部署 create-react-app 的建议

[英]Recommendations on deploying create-react-app with node backend

我正在尝试部署使用 node.js 快速后端(在 AWS EC2 实例上运行)的 React 应用程序。 我在决定如何部署我的 React 应用程序以确保它可以从后端获取时遇到了麻烦。

  1. 我可以将我的网站 example.com 设置为指向具有我的 React 应用程序的 AWS S3 静态托管。 在这种情况下,我将不得不在 React 代码中对我的 ec2 公共 ip 进行硬编码,例如 fetch(" http://12.35.143.34/api/users/1 ")。

  2. 我可以将我的网站 example.com 设置为使用 Nginx 定向到一个 ec2 实例,该实例会将 /api 调用定向到服务器,并将任何其他类型的调用定向到 S3 存储桶。

我阅读了关于这两种方式的不同帖子,所以我对哪种方式是正确的感到困惑。

编辑:或者是否有第三个选项,例如 api 子域?

我的方式 :

1.将您的节点应用程序部署到 EC2 尝试附加 DNS 或仅使用 aws 给定的 DNS - 此处

2.使用邮递员测试您的api。

3.将api url端点值更改为api DNS

4.deploy(上传)你的 dist/(构建目录)—— 这里

5.配置存储桶作为静态网站主机 - 这里

6.(可选)尝试将 CloudFront 配置到您的存储桶并获取应用 dns - 此处

有很多方法可以在 AWS 上运行基于 NodeJS 的应用程序。 最适合您的方案取决于您的情况以及您的应用程序的开发方式。

  1. 使用AWS Elastic Beanstalk
  • 它是一种 PaaS 服务,可让您在 AWS 基础设施之上运行您的应用程序,而无需单独配置这些服务。
  • 文档
  1. 使用AWS Lambda + AWS API 网关
  • 如果您的代码库支持它,那么这是一种非常可扩展、廉价且高性能的运行应用程序的方式。
  • 您可能需要重写部分代码。 这取决于您的后端是如何编写的。 如果您使用express ,将其迁移到 AWS Lambda 很简单。
  • 将 Express 应用程序迁移到 Amazon API Gateway 和 AWS Lambda
  1. EC2 使用ELBAuto Scaling 组
  • 无论您的应用程序有多大,您都应该以某种程度的高可用性和负载平衡来运行它。
  • 你不应该只在一个节点上运行你的应用程序; 您应该使用 Auto Scaling 组。
  • 您不应直接在 Internet 上发布您的 EC2 实例; 您应该使用应用程序负载均衡器。
  • 如果您的应用程序使用数据库,您应该尝试将其移动到 RDS,而不是自己运行。

最后,为了回答您的问题,我建议 3:您应该使用多个 CloudFront 源。 我们使用 S3 存储桶源来保存静态数据,以及用于动态、不可缓存内容的 ELB 源。 查看此帖子以获取有关如何操作的更多信息

如果您拥有域,您还可以创建证书并通过 CloudFront 处理的 HTTPS 提供您的内容。

我希望它有帮助。

暂无
暂无

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

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