Saturday, July 09, 2011

使用Play! Framework在GAE上架網站


今年自己在網站開發方面做了很多改變。

第一件是Domain name續約並全面採用 gasolin.idv.tw 系列網址。

本如部落格網址可由 blog.gasolin.idv.tw 連結,
Android書籍/應用相關訊息可由 android.gasolin.idv.tw 連結。

第二件是使用的網頁框架改變。

個人的首頁 www.gasolin.idv.tw 仍然架在Google App Engine上頭,
但背後使用的技術,也從Python based的 GAEO ,改為使用Java based的 Play! Framework

使用 Play! Framework 的好處是它並不像GAEO一樣完全捆綁在Google App Engine上,而是隨時可以搬離GAE獨立運作。

再者Play!的專案架構和使用方法很接近TurboGearsDjango等現代的網頁框架,因此熟悉現代網頁框架的開發者應該能很快地上手。開發的時候可以在本地端開發,而且修改後的結果也能即時自動編譯並顯示,用起來非常接近使用動態語言開發的使用經驗。(Play!的命令行工具是用Python寫的:))

Play! 的另一個好處是有很好的模組(Module)架構。要將網站發佈在Google App Engine上時,透過GAE模組和搭配Siena(提供ORM層)、crudsiena(提供自動Admin管理頁面)模組,可以不被Google App Engine的一堆限制所制約,從而得到完整的開發經驗。

Play! 的官方網站上有很齊全的文件可供參考。所謂的「齊全」到了什麼地步呢?
除了簡介、教學、模組介紹之外,甚至還有cheatsheet !


要從頭開始建立一個Play網頁程式到發佈在GAE,要做以下6幾點

1. 建立專案

$ play new  [project name]

2. 安裝相關模組

執行

$ play install gae-版本
$ play install siena-版本
$ play install crudsiena-版本

3. 修改模組依存關係

進入專案目錄, 修改 conf/dependencies.yml 檔案


# Application dependencies

require:    - play -> play [1.2.1,)
    - play -> secure
    - play -> siena [2.0.0,)
    - play -> crudsiena [2.0.0,)
    - play -> gae 1.4
4. 自動檢查模組依存關係

執行

$ play deps

5. 修改GAE相關設定

根據GAE模組提供的文件做相應的GAE發佈設定(指定要deploy的GAE代號)

6. 發佈

執行

$ play gae:deploy --gae=[app engine java sdk path]

如此即完成整套使用Play!  + Google App Engine 的配置流程。


Update 2011/7/20: 在Taipei GTUG活動中和大家分享了Play! on GAE的相關經驗,並公開投影片

3 意見:

Lundi said...
This comment has been removed by the author.
Peter wolf said...

Hi gasolin,
您文章中的最後一段

"...甚至還有chearsheet !"

似乎是 cheatsheet 的打字錯誤呢!

P.w

gasolin said...

Peter wolf: 謝謝指正,已修改 :)