OK啦,這是最后一篇,其實從原官方文檔的組織上,該小節是3.3——container之后,object之前,為了API整體思路的連貫性,我自己擅作主張放到了最后一部分。這章是我覺得swift中比較有趣的一章,可以直接將swift配置成靜態站點,作為數據下載站,直接解決了靜態站點數據備份的問題。
於是,讓我們愉快的繼續吧 =D
3.3. 創建靜態站點(Create Static Website)
你可以使用swift賬戶在互聯網上創建一個靜態站點。這種模式通常是匿名請求的,如果你希望在這種模式下使用認證請求,則需要在請求頭中將 X-Web-Mode 設置為 TRUE。過濾器 staticweb 也應該添加到配置文件 /etc/swift/proxy-server.conf 中認證中間件后的管道上。staticweb 中間件的配置必需添加到pipeline后,如:
[DEFAULT] ... [pipeline:main] pipeline = healthcheck cache tempauth staticweb proxy-server ... [filter:staticweb] use = egg:swift#staticweb # Seconds to cache container x-container-meta-web-* header values. # cache_timeout = 300 # You can override the default log routing for this filter here: # set log_name = staticweb # set log_facility = LOG_LOCAL0 # set log_level = INFO # set access_log_name = staticweb # set access_log_facility = LOG_LOCAL0 # set access_log_level = INFO # set log_headers = False
你的公共可讀的container應該包含 X-Container-Meta-Web-Index 和 X-Container-Meta-Web-Error 這兩個頭( X-Container-Meta-Web-Error 這個header將在后文“為靜態站點設置出錯頁”中討論)。
X-Container-Meta-Web-Index 用於指定站點的默認訪問頁(default頁,或者index.html文件)。當一個用戶第一次進入你的站點時,他不需要指定特殊的index文件,你的站點就會自動將index.html展示給他。如果你通過創建偽目錄的方式為你的站點創建了子目錄,則每個子目錄的默認訪問頁的名稱都將是X-Container-Meta-Web-Index 指定的頁面。如果你的偽目錄中不包含一個同X-Container-Meta-Web-Index 指定的頁面名字相同的index file,則當用戶訪問這個子目錄時,將會返回一個404錯誤。
你也可以選擇展示子目錄中的文件列表,而非一個網頁。如果要實現展示子目錄中的文件列表功能,只需將頭 X-Container-Meta-Web-Listtings 設置為 TRUE。你可以通過設置 X-Container-Meta-Web-Listings-CSS 為你的文件列表添加樣式(如lists.css)。
3.3.1. 通過Swift實現的靜態網頁中間件(Static Web Middleware via swift)
例3.38. 設置Container為公共可讀的
設置Container為公共可讀的。一旦container被設置成公共可讀的,那么你可以直接訪問的容器中的對象,但是你需要為站點的主URL(即container的URL)和它的子目錄設置index file。
swift post -r '.r:*' container
例3.39. 設置站點的Index文件
設置站點的Index文件。在這個例子中,index.html是站點的默認訪問頁。
swift post -m 'web-index:index.html' container
例3.40. 啟用文件列表
啟用文件列表。如果你沒有設置index文件,則要將container中的對象列表展示出來。設置樣式的命令在下一個例子中。
swift post -m 'web-listings: true' container
例3.41. 為文件列表設置CSS樣式
為文件列表設置樣式。
swift post -m 'web-listings-css:listings.css' container
3.3.2. 為靜態站點設置出錯頁(Set Error Pages for Static Website)
你可能需要為你的站點設置自定義的錯誤頁。目前,只支持401(Unauthorized)和404(Not Found)這兩個錯誤。為了實現自定義錯誤頁,你需要設置元數據頭 X-Container-Meta-Web-Error。
真正的錯誤頁根據 狀態碼 和你所設置的 X-Container-Meta-Web-Error名稱 來決定。例如,你將 X-Container-Meta-Web-Error 設置為 error.html,則當出現401錯誤時,將會展示 401error.html 頁面,類似的,當出現404錯誤時,將會展示 404error.html 頁面。在你設置為container設置 X-Container-Meta-Web-Error 后,你可以為這兩種錯誤分別創建錯誤頁,也可以不創建,讓他們訪問公共的錯誤頁。
你只需要為整個站點設置一次 X-Container-Meta-Web-Error 即可。
例3.42. 為文靜態站點設置錯誤頁
swift post -m 'web-error:error.html' container
任何一個2xx的響應都表示執行成功了。
至此,OpenStack對象存儲的官方API算是翻譯完成啦!不要問我第1章和第4章,我是死活都不會翻的!第4章主要是使用cURL與swift交互的介紹,比較直接,沒太多需要理解的東西,自己看看就好,不要懶哦 =P