Hello in Google App Engine [1]
| Author: | Frankie Chow |
|---|---|
| Version: | 2 |
| Copyright: | Creative Commons licenses |
| Date: | 2009-3-14 |
| Description: | 此文章參考 google 的 Hello, World ! |
| Category: | Notes, Python, GAE |
| ShortName: | Hello in gae |
何謂 Google App Engine
Google App Engine 是 Google 提供的網上服務。使用者可以把自己所編寫的網上應用存放在 google 伺服器中。
google 亦提供它自己的 SDK 你可以從這裡下載。 download !
您可以因自己使用的系統下載自己需要的安裝套件,而這些套件是需要 python2.5 來運作的。
在 Linux 下載 SDK 及起始設定
如果您是使用 Linux 作創作平台的話,您只需要簡單地下載了 SDK 套件後,把它解壓後就己完成了安裝的步驟。
我是在家目錄下解壓的。
~$ unzip google_appengine*.zip ..... ..... inflating: google_appengine/lib/yaml/setup.cfg inflating: google_appengine/lib/yaml/setup.py ..... .....
解壓後,在家目錄下就會多了一個叫作 google_appengine 的目錄;這就是您 SDK 的安裝地方了。
開始使用 SDK
當您開始使用 google_appengine 的時候,您也必須要先建立一個 app 的目錄;我們也先在家目錄下建立一個叫作 TestGAE 的目錄。
~$ mkdir TestGAE
然後您就需要在這個目錄下建立一個叫作 app.yaml 的檔案。內容如下︰
application: TestGAE version: 1 runtime: python api_version: 1 handlers: - url: / script: main.py
在這裡我們最重要留意的是 application 中的名字,因為您在 Google App Engine 中登記一個 app 的時候, 也會登記了一個唯一的名字,在這裡您就需要填入當中的名字; 但是如果您只是在自己的電腦中作學習,那您就可以隨意填入自己喜好的字串了。
另外 version 、runtime 、 api_version 那您只要跟著以上的值填入則可以了。 [2]
app.yaml 中的 handlers 段落
我也希望您可以留意一下 handlers: 這段落,它的 syntax 如下︰
handlers: - url: / script: main.py
當 google app server 接收到一個 request ,而它的 url 為 / 時, 那 server 就會用 python 來執行家目錄下 TestGAE 下的 main.py 程式。
起動 dev_appserver.py 及作測試
我們要在自己電腦內作測試的話,您可以鍵入如下的指令。
~$ google_appengine/dev_appserver.py TestGAE INFO ... Server: appengine.google.com INFO ... Checking for updates to the SDK.
那您就可以起動 dev_appserver 了,我們也可以透過瀏覽器瀏覽。
如果我們是在自己電腦下作測試的話,你可以試試用瀏覽器瀏覽 http://127.0.0.1:8080/ 您就會得到這樣的結果。
Traceback (most recent call last): .... .... CouldNotFindModuleError
當然是一個 Error ,因為您暫時仍沒有編寫 main.py 檔案。
編寫 main.py 檔案
以下是我們的 main.py 檔案。
print 'Hello'
執行 main.py 程式
當然您可以試試用您的主機下用 python 來執行 main.py 檔案。
~$ python main.py Hello~$
main.py 內的程式碼就是叫 python 列印出 Hello 的字樣。
使用瀏覽器瀏覽
這時您可以改用瀏覽器作瀏覽了。請在 Firefox 中鍵入︰ http://127.0.0.1:8080/ 你就可以得到另一個 Hello 的字樣了。
| [1] | 參考 ref |
| [2] | 其實現時的 GAE 中, runtime 和 api_version 這兩個值暫時也沒有辦法更改。 |