目前Google App Engine(以下簡稱GAE) 1.1版,支援Python 2.5版,而GAE的SDK開發環境,只要是可以執行Python 2.5的平台,都可以,所以無論Windows、Linux或是Mac都可以開發GAE。
1. 安裝GAE SDK 所以建置開發環境的第一步就是在你的電腦上安裝
Python 2.5(以上),然後就可以安裝
GAE SDK。
安裝完成後,有兩個python檔案先介紹一下,詳細的用法之後再一一說明:
- dev_appserv.py :在本機端測試的python執行檔
- appcfg.py :上傳至GAE Server的python執行檔
2. 本機端測試 由於GAE是提供虛擬伺服器的服務,所以它的測試環境與一般的Apache、Tomcat類似,可以將你寫好的GAE Code執行起來,然後使用者可以透過瀏覽器輸入http://localhost:8080 (預設是8080的Port,可以更改),去測試你寫好的程式。
2.1 建立Project檔案 可以在GAE的安裝目錄底下新建一個新資料夾Ex: Test。此Test資料夾內,必須至少有兩個檔案:(1)
app.yaml (2)
myapp.py。其中,app.yaml是你的Project的config檔(檔名固定),myapp.py就是背後處理網頁的python檔(檔名自訂)。
2.2 app.yaml簡介 每個Project資料夾中,必須要有一個
app.yaml檔,這是一個Project config檔,用來指定Project在GAE上註冊的名稱,目前的版本,還有最重要的URL mapping。比如下面這個範例,是安裝GAE SDK時,裡面附的範例檔 - GuestBook,這是它的app.yaml檔的內容:
application: guestbook
version: 1
runtime: python
api_version: 1
handlers:
- url: .*
script: guestbook.py
application放的就是Project檔的名稱(上傳至GAE時,就依此名稱存放,因此必須是有註冊成功的名稱才行),
version就是目前的開發版本,允許的版本號的範圍為
^(?!-)[a-z\d\-]{1,100}$,有興趣的可以試試不一樣的版本號:)
handlers放的就是URL的mapping,會根據url的內容,指定給一個python script檔去執行。而這個guestbook的範例,就是將所有的url都交給guestbook.py這個檔案執行。此url的撰寫方式,支援
正規表示法。
所有你的GAE Project底下的URL,第一關卡,就是經過這個app.yaml決定誰去處理。所以你的GAE Project裡的Image、CSS、Javascript檔的URL link,都會經過此app.yaml的處理。因為這些檔案都是直接上傳給瀏覽器即可,不需要額外的處理,所以可以用
static_dir這個handler去指定它。如:
handlers:
- url: /images
static_dir: images
- url: /js
static_dir: js
- url: /.*
script: myapp.py
根據上面這個app.yaml的設定,當url為
/images/.*時,會直接從images這個資料夾找到相同名稱的檔案上傳。同樣的,
/js/.*也是一樣的做法。而其他所有的url,全會交由myapp.py處理。
必須注意到的是,url mapping會由上而下找到第一個對應到的url rule,所以
/.*這個rule必須擺在最下面,否則所有的url都會符合此rule,就不會找其他的rule了。
其他更多的app.yaml說明,請
參考官網。
2.3 本機端執行Project 當完成上面的步驟後,建好自己的Project,資料夾內至少包括(1)
myapp.py (2)
app.yaml,就可以執行起來試看看了。在Console Mode底下,到GAE的安裝目錄底下,輸入下面的指令即可(Windows的使用者要先將*.py指定給Python執行)
dev_appserver.py myapp/
GAE安裝好後,有一個範例檔在:$(GAE)/demos/guestbook。執行的指令為:
dev_appserver.py demos/guestbook
執行後,即可在瀏覽器中輸入http://localhost:8080,看看Project執行後的成果了。
修改程式碼時,並不需要重新啟動Server,只需要網頁重新整理即可,很方便。
dev_appserver.py有一些參數可以用,僅列出常用的,其餘請
參考:
--help 印出說明訊息
--port=... 指定localhost的port,預設為8080
--clear_datastore 清除之前的Datastore的data
3 上傳Project至GAE Server 在Console Mode底下,至GAE安裝目錄,執行appcfg.py即可上傳。
appcfg.py [options] update <app-directory>
輸入的
<app-directory>必須要包含
app.yaml,上傳的檔案會根據app.yaml的設定去搜尋需要上傳的檔案。且會根據app.yaml中設定的application名稱,上傳至你註冊的GAE application。上傳時,會詢問你的email和密碼,也可以在
[options]裡面,指定
--email=...,就不用每次上傳時都手動輸入了。相關的參數請
參考。