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 這兩個值暫時也沒有辦法更改。

Comments: (log in to comment)