將我的部落格遷移到亞馬遜雲端(2)

黃博文發表於2013-10-01

將我的部落格遷移到亞馬遜雲端(2)

上篇文章中講了將我的Octopress部落格部署到亞馬遜的S3上。而這篇文章則主要講如何使用亞馬遜提供的CloudFront作為內容分發並將自己的獨立域名繫結到此CloudFront上。

首先,需要啟用亞馬遜的CloudFront。我剛開始以為只需要‘sign up’就行。但是當我在’AWS Management Console’中點選‘Services’中的CloudFront時,卻得到了‘Account Blocked’錯誤。

將我的部落格遷移到亞馬遜雲端(2)

這個問題很奇怪,CloudFront明明已經在’ Services You’re Signed Up For’ list中了,但是咋個無法使用那?我只好使用gmail給Amazon客服中心發了郵件詢問,結果客服中心告訴我需要使用一個business email(商業郵箱)來傳送啟用申請。我只好使用公司郵箱傳送了申請,過了幾個小時就收到了回信,告訴我已經可以使用了。

登陸’AWS Management Console’後,點選’Services’中的‘CloudFront’,就可以看到控制介面了。

將我的部落格遷移到亞馬遜雲端(2)

點選’Create Distribution’按鈕,Delivery method選擇Download。 Download主要針對一些html,css,js等靜態檔案,而Streaming則主要是一些音視訊檔案。

將我的部落格遷移到亞馬遜雲端(2)

下一步,要選擇Origin,即要進行內容分發的源。雖然亞馬遜會自動列出你的S3 bucket,但是千萬不要選。而是自己手動輸入example.com這個Bucket的Endpoint(Endpoint在S3 Console的Properties標籤下的Static Website hosting裡看得到)。為什麼不直接選S3 bucket那?這是因為當我們訪問一個目錄時,我們期望能返回預設的object。雖然CouldFront有個Default Root Object設定,只是對根目錄起作用,對子目錄不起作用。如果使用Bucket的Endpoint,再加上之前已經給該Bucket配置了Default Object,就可以解決這個問題。

將我的部落格遷移到亞馬遜雲端(2)

在CNAMEs項中輸入自己的域名,多個域名以逗號分隔。

將我的部落格遷移到亞馬遜雲端(2)

這樣子CoudFront就算配置好了。通過管理頁面也可以配置Error page等。

將我的部落格遷移到亞馬遜雲端(2)

接下來,需要登入自己域名的提供商的管理後臺,新增一條自己獨立域名的轉發,轉發到這個CloudFront的Domain Name上。

將我的部落格遷移到亞馬遜雲端(2)

一般需要10分鐘到2個小時等待新的域名轉發設定生效。

另外要專門提一下CloudFront的cache機制。CloudFront主要通過檢測Origin中的http header中的cache-control屬性。根據cache-control的值來設定cache時間。但是CloudFront最長只保留24小時的cache,過後就會清空並重新cache。對於我的小部落格來說24小時太長了,那如何給Octopress注入cache-control這個http header那?其實在上篇文章已經提過了。S3支援給每個object設定 http header,我們可以通過s3cmd來自動設定,這就是為什麼在S3 task中要加入這個引數。

1
2
3
4
5
desc "Deploy website via s3cmd"
task :s3 do
  puts "## Deploying website via s3cmd"
  ok_failed system("s3cmd sync --acl-public --reduced-redundancy --add-header \"Cache-Control: max-age=#{s3_cache_secs}\"  public/* s3://#{s3_bucket}/")
end

其中S3_cache_secs就是設定cache時間,我把它設定為3600,也就是一個小時。

至此,我的Octopress部落格已經在雲端了。感覺訪問速度比以前快不少。以前我是部署在github pages,伺服器放置在美國。現在使用了CloudFront,亞馬遜會自動將請求轉發到最近的CloudFront edge location。接下來我再研究下 Amazon Route 53,看看有什麼好玩的。

我的部落格地址: http://www.huangbowen.net

相關文章