簡體   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