文章出處

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

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

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

登陸’AWS Management Console’后,點擊’Services’中的‘CloudFront’,就可以看到控制界面了。

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

下一步,要選擇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,就可以解決這個問題。

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

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

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

一般需要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


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()