使用 aws(amazon web services)等云提供商通過自定義域部署 react 應用程序可能看起來令人畏懼,但當分解為可管理的步驟時,它就很簡單。在本文中,我們將指導您完成從構建應用程序到使其在您的自定義域上運行的整個過程。
當您準備好與世界分享您的 react 項目時,使用自定義域部署它可以為您的應用程序帶來專業的觸感。 aws 提供了一個強大的、可擴展的平臺來托管靜態網站,使其成為部署 react 應用程序的絕佳選擇。本指南將引導您逐步完成使用自定義域在 aws s3 上部署 react 應用程序的過程。
準備部署您的 react 應用程序**
在部署之前,您需要構建您的 react 應用程序:
構建您的應用程序:在終端中運行以下命令來生成 react 應用程序的生產版本:
npm run build
登錄后復制登錄后復制
此命令創建一個優化的構建文件夾,其中包含您需要部署的所有文件。
測試構建:在部署之前在本地測試你的構建是個好主意。您可以使用像服務這樣的包:
npx serve -s build
登錄后復制
此命令將在本地為您的應用程序提供服務,以便您可以確保一切按預期工作。
設置 aws s3**
aws s3(簡單存儲服務)是托管 react 應用程序等靜態網站的絕佳選擇。
創建s3存儲桶:
前往aws s3控制臺。
點擊“創建存儲桶”。
輸入唯一的存儲桶名稱(這將是您的應用程序的名稱)。
選擇離目標受眾較近的地區。
取消選中“阻止所有公共訪問”選項并確認您的存儲桶將可公開訪問(對于托管網站很重要)。
上傳你的react應用:
創建存儲桶后,點擊它打開它。
點擊“上傳”并選擇構建文件夾中的所有文件。
上傳后,點擊“屬性”,然后啟用“靜態網站托管”。
將“索引文檔”設置為index.html,將“錯誤文檔”設置為index.html
公開存儲桶:
轉到您存儲桶中的“權限”選項卡。
點擊“存儲桶策略”并粘貼以下 json,將 your-bucket-name 替換為您的實際存儲桶名稱:
{ "version": "2012-10-17", "statement": [ { "sid": "publicreadgetobject", "effect": "allow", "principal": "*", "action": "s3:getobject", "resource": "arn:aws:s3:::your-bucket-name/*" } ] }
登錄后復制
保存政策以允許公眾訪問您的文件。
設置自定義域**
要使用自定義域,您需要配置 aws 的 dns web 服務 route 53。
注冊您的域名:
如果您沒有域名,可以直接通過aws route 53注冊一個。
如果您已有域名,您仍然可以通過 route 53 為其創建托管區域來管理它。
配置53號路線:
在 route 53 儀表板中,轉到“托管區域”并單擊您的域。
點擊“創建記錄”并選擇“a – ipv4地址”。
選擇“別名”并選擇您的s3存儲桶作為別名目標。
更新您域名的dns:
如果您的域是在 aws 外部管理的,請更新您的 dns 設置以指向您創建托管區域時提供的 route 53 名稱服務器。
使用 aws certificate manager 設置 ssl(可選但推薦)**
為了安全和seo的好處,使用https至關重要:
申請證書:
前往aws證書管理器。
申請公共證書并輸入您的域名(包括www.yourdomain.com和yourdomain.com)。
按照aws提供的說明驗證域名。
配置cloudfront:
設置 aws cloudfront 以通過 https 安全地提供您的內容。
在 cloudfront 控制臺中,創建一個新的分配并選擇您的 s3 存儲桶作為源。
在ssl證書下,選擇“自定義ssl證書”并選擇您創建的證書。
更新域設置以指向cloudfront分配而不是直接指向s3存儲桶。
示例:部署示例 react 應用程序
假設您已經使用 react 創建了一個個人作品集,并且想要將其部署到 www.myportfolio.com:
構建你的 react 應用:
npm run build
登錄后復制登錄后復制
上傳到s3:
創建名為 myportfolio.com 的 s3 存儲桶。
上傳您的構建文件夾內容。
啟用s3靜態網站托管。
配置53號路線:
在 route 53 中注冊 myportfolio.com.
在 route 53 中創建一條指向您的 s3 存儲桶的 a 記錄。
設置ssl:
為myportfolio.com申請ssl證書。
設置 cloudfront 發行版以通過 https 安全地為您的應用程序提供服務。
片尾曲
在 aws 上使用自定義域部署 react 應用程序一開始可能看起來很復雜,但通過上述步驟,您可以放心地托管您的應用程序,并享受專業部署的所有優勢。無論您是部署個人項目還是生產級應用程序,aws 都能提供滿足您需求的工具和可擴展性。
常見問題
q1:我需要支付 aws s3 和 route 53 費用嗎?
答:是的,aws 服務是付費的,但它們提供使用有限的免費套餐,這通常足以用于小型項目或測試。
q2: 我可以使用其他域名注冊商代替 route 53 嗎?
答:是的,您可以使用其他注冊商,并通過相應配置 dns 設置將您的網站托管在 aws s3 上。
q3:為什么我應該使用cloudfront?
答:cloudfront 提供更好的性能、安全性(https)和緩存,可以顯著提高您網站的速度和可靠性。
q4:如果我在部署過程中遇到問題怎么辦?
答:aws 文檔和社區論壇是排除故障的絕佳資源,如果需要,還可以提供客戶支持。
按照本指南,您可以使用 aws 部署帶有自定義域的 react 應用程序,并確保專業且安全的網絡存在。