宣告:
本文轉自 DEV Community 網站,文章翻譯由開發者社群提供;
點選下方連結,檢視英文原文:
你可能認為這篇文章是標題黨,但事實並非如此。我已經在亞馬遜雲科技上搭建了一個功能齊全的靜態無伺服器 Wordpress 解決方案,並配備全球 CDN、WAF 和 A 級 SSL,每天只需花費 1 美分。它速度快、有彈性、可擴充套件,而且與許多 Wordpress 網站不同的是,不容易遭受暴力登入攻擊。
要知道,你也可以做到這一點。它位於一個開源的 Terraform 模組,我希望這種簡單的訪問方式能夠顛覆網際網路。30 分鐘就能從零開始完成設定。
靜態無伺服器 Wordpress 是什麼?
靜態無伺服器 Wordpress是 TechToSpeech 的一個 Community Terraform 模組,只需一個註冊域名,其 DNS 指向亞馬遜雲科技。
它建立一個完整的基礎設施框架,並啟動一個臨時的 Wordpress 容器。和其他 Wordpress 網站一樣,你可以登入並進行自定義操作,最後將其釋出為一個靜態網站,依託於全球 CloudFront CDN 和 S3 Origin。完成之後,你可以關閉 Wordpress 容器,這一切幾乎沒有成本。
重點在於只需極少的配置,因為你需要的大部分資源都是根據行業最佳實踐和高效執行成本進行預安裝、預配置的。
你有想轉換為靜態無伺服器 Wordpress 的網站嗎?沒問題。
這裡有很多內容要講述,所以分成了兩篇不同的文章:短版和長版。如果你想抓緊時間馬上開始,請看第一篇;如果你想了解該解決方案的具體執行機制,請看第二篇。
如果你熟悉亞馬遜雲科技,那麼你很快就會弄明白。不過,即使你是第一次接觸,短版中的步驟也能幫助你快速啟動和執行。
短版
在以下步驟中,我們會使用示例域www.peter.cloud。
步驟0 -建立一個亞馬遜雲科技賬戶。
步驟 1 – 域
在你的亞馬遜雲科技賬戶中,為域名建立一個 Route53託 管區。建立後,它將為您的新網站顯示四個 DNS 名稱伺服器。
進入域名註冊地址(可以是亞馬遜雲科技本身,也可以是其他地址),將 DNS 伺服器更新為剛剛建立的四個。
步驟 2 - 工具和憑證
確保你有 Terraform、Amazon-CLI(使用者和憑證)和(可選但最好有)服務已啟用的 Docker。
步驟 3 - 程式碼和規劃
檢視專案的 GitHub README,瞭解豐富的程式碼例項,以便快速進行設定和部署。
該模組幾乎能夠自己完成全部工作,但這裡有一些額外的特定資源,使其成為一個完全不需要動手的端到端流程。需要安裝 docker,正確配置 Amazon CLI 的預設區域和配置檔案。
Terraform 初始化、規劃、應用,然後坐下來喝杯茶。完整的端到端建立流程應該需要 10 分鐘左右。除非你操作有誤,否則過程中不會發生錯誤。不過,為了以防萬一,請再進行一次規劃和應用步驟。
步驟 4 - 啟動 Wordpress
啟動 Wordpress 和釋出靜態網站所需要建立的一切,都在步驟 3 裡完成。但目前為止它尚未啟動。如果沒有新增可選的 Terraform 資源來觸發 CodeBuild 作業,你需要前往所選地區的 CodeBuild 控制檯,啟動“-serverless-wordpress-docker-build”作業並等待完成(大約需要2分鐘)。
將模組的啟動“屬性”從 0 修改為 1,然後再次執行 “terraform apply”。Wordpress 現在將啟動。首次設定大約需要 5 分鐘,包括初始網站的建立、配置和必要外掛的安裝。
預設情況下,你的 Wordpress 安裝將在 http://wordpress.yourdomain.com(為什麼沒有 SSL?詳情請查閱長版)。
預設的使用者名稱是“supervisor”,預設的密碼是“techtospeech.com”。你可以在模組配置中修改使用者名稱、密碼以及預設的子域,也可以登入Wordpress後進行修改。請確保這樣操作。
步驟 5 – 釋出
現在,Wordpress 的安裝和其他 Wordpress 一樣。你可以安裝大多數外掛(儘管所有具有伺服器端功能的外掛都無法在靜態網站中執行)、任何你喜歡的主題,甚至可以匯入當前網站的備份。像 Yoast 這樣的 SEO 外掛也能正常工作。如果網站閒置超過 5 分鐘,後臺資料庫就會暫停(以節省費用),不過只要重新整理管理控制檯,延遲幾秒鐘之後就會再次啟動。
當你要停止容器時,將 Terraform 配置的“啟動”屬性切換回 0,然後重新執行“terraform 應用”。你也可以在亞馬遜雲科技控制檯中手動將 ECS 服務更改為 0 任務。未來會有更好的方法來一鍵啟動或暫停網站。停止容器不會丟失任何資料——資料庫將在後臺儲存,同時儲存的還有你安裝的所有檔案、影像、外掛或主題。其狀態會一直保留到下次啟動。
不過,至關重要的是,要記得關閉容器。否則它會繼續執行——即便如此,也不會產生太多費用,但這個解決方案的意義就在於省錢,而不是浪費錢 (未來的另一項更新是閒置時自動關閉功能)。
當一切準備就緒後,就可以釋出了。檢查一下已經自動安裝的 WP2Static 外掛和 WP2Static S3 外掛。Leon Stafford 是這些外掛的建立者。他是開源的靜態 Wordpress 大師,沒有他,就沒有這個專案的部署機制。更多關於 Leon 的內容請在長版中查閱。
你可以檢視全部 WP2Static 選項,可以調整配置部署,但自動設定已經預先填寫了你要釋出的內容。點選“生成靜態網站”按鈕,然後定期重新整理日誌,檢查狀態。該操作會抓取每個 URL 並重寫到一個簡潔的靜態版本,然後直接推送到支援網站靜態版本的 S3 儲存桶。
這個過程需要 3-5 分鐘,如果你的網站規模更大,耗時就會更長一些。我們正在研究更快的方法(歡迎提供幫助!),但目前與此設定捆綁的版本穩定、可靠,只是需要一點耐心。
這個過程結束後,就大功告成了! 前往 https 版本的網站(本示例是https://www.peter.cloud),你會驚訝地發現,網站看起來和以前一樣,只不過現在它是無伺服器的、靜態的、由全球 CDN 快取的,不會因為某些薄弱的 DDoS 攻擊或 wp-login 暴力攻擊而崩潰。試試前往 https://www.peter.cloud/wp-admin。哈, 網站根本不存在!
真的每天只需0.01美元嗎?
是的,但也不完全是。這取決於具體情況。
看一下典型用例。假設你是一個呆板的技術人員,擁有個人部落格網站(我就是這樣,我的網站是 petewilcock.com),你釋出了一些文章,每天有 50 到 200 次點選量。在這些流量下,網站會以靜態形式執行,不需要任何干預,每天的成本大約為 0.01 美元,這是完全合法的。
另一方面,假設你擁有一家全球著名的大型內容生成企業,每月會發布數千篇文章,擁有數百萬次點選......費用則多得多。流量方面的唯一可變成本是 CloudFront 分配費用,你可以利用 CloudFront Security Savings Bundle 獲得折扣,降低成本。如果你的企業規模特別大,你可以直接向亞馬遜雲科技諮詢定製 CloudFront 的價格。WAF 有一些不可避免的固定成本,會使執行成本每天至少增加 0.6 美元。但如果你立場不堅定,需要 WAF,那麼我猜你可以負擔得起。
我使用該設定執行幾個靜態 Wordpress 網站,每月只需花費1美元購買一個 Savings Bundle,就能涵蓋很多用量。之前,我執行的是一個帶有 CPanel 許可的 T3 虛擬主機伺服器,每年花費約 600 美元。由於某些原因,這樣的比較從嚴格意義上來講並不公平(例如,該設定目前不能處理電子郵件,但請注意,未來會更新!),但是你開始瞭解到這與基本網站的“傳統”託管設定之間的區別。即使是其他“靜態”Wordpress 網站的供應商也無法與之競爭,因為他們需要利潤,而你不需要。
唯一需要注意的其他成本,是支援 Wordpress 的 ECS Fargate 容器的執行成本(它以 Spot 模式執行,所以非常便宜),以及支援 Wordpress 資料庫的 RDS Aurora Serverless v1 資料庫。實際上這是最貴的部分(你猜對了,如果你想犧牲功能性和便利性,未來將提供一個更便宜的版本),但只會在你主動修改網站的時候收費。舉個例子,如果我花了幾個小時編輯網站,可能需要花費大約 0.3 美元。最關鍵的是,在絕大多數情況下,如果你不新增內容,幾乎不需要任何費用。
問題解決
任何設定都不會是完美無缺的,所以,如果你在使用 Terraform 模組時有任何問題,請在我們的 GitHub 上報告,我們會進行檢視。我們也歡迎你的貢獻。
如果你在使用 WP2Static 外掛時遇到問題,請檢視他們的問題頁面,瞭解常見問題和解決方案,你遇到的任何問題都可能按照你希望的方式解決。你可以隨時升級該外掛或 Wordpress——但一定要先備份。我推薦 UpdraftPlus,它是一款優秀的免費 Wordpress 備份外掛。
總結
首先再次提醒一下。當你完成時,不要忘記關閉你的 Wordpress 容器。
這個模組是經過幾個月的辛苦迭代的成果,既要為我自己使用,又要具有廣泛的適用性,這樣在公開發布後才不會使自己感到尷尬。它集合了我自 2014 年開始使用亞馬遜雲科技以來的所有經驗,並將我掌握的 DevOps 和 Web 開發的每一個元素壓縮到一個緊湊的解決方案中,任何人都可以使用。我希望它對你有所幫助。
文章作者:Pete Wilcock
Pete Wilcock for AWS Community Builders