Google App Engine SDK - Python
Python による Google App Engine 開発
Google App Engine (GAE) は Python 2.5 をサポートしています。もしバージョンが違う場合(特に Py3k の場合) は 2.5 を用意しておいた方が良いでしょう。
ちなみに、Pythonのバージョンの確認は次のように -V オプションでできます。
$python -V
Google App Engine SDK for Python
Linuxへのインストール
Google App Engine SDK for Python は zip ファイルとしてGoogleのサイトからダウンロード可能です。 7/23/2011 時点はバージョン 1.5.2 の google_appengine_1.5.2.zip がダウンロードできます。
私の環境は Ubuntu 11.04 ですが上記 zip を ~/google_appengine に展開しました。
動作確認
Python プログラムの準備
それではさっそく、Pythonで簡単なコードを書くことによって、開発環境が動作することを確認しましょう。
まず、helloworld1 という名前のディレクトリを作ります。私は ~/src/test/py/helloworld1 に作りましたが、好きなところに作って構いません。私の環境と違うところに作ったら、以下、パスの部分は読み替えてください。
次に、上で作った helloworld1 内に helloworld.py というファイルを作って、 次の内容を記述します。
print 'Content-Type: text/plain'
print ''
print 'Hello, world!'
次に、同じく helloworld1 内に app.yaml という名前のファイルを作り、次の内容を記述します。
application: helloworld1 version: 1 runtime: python api_version: 1 handlers: - url: /.* script: helloworld.py
これだけでアプリケーション側の準備は完了です!これを SDK の開発サーバー上で実行しましょう。
開発サーバーでの実行
開発サーバーは SDK に含まれるスクリプト dev_appserver.py で実行できます。
dev_appserver.py [アプリケーションルート]
今回の場合 SDK は ~/google_appengine/に、アプリケーションは ~/src/test/py/helloworld1 に作りましたので、 コマンドは次のようになります。
$ ~/google_appengine/dev_appserver.py ~/src/test/py/helloworld1
すると、デフォルトで localhost のポート 8080番で待ち受けを開始します。
私の環境ではコマンドを実行すると次のように表示されました。
$ ~/google_appengine/dev_appserver.py ~/src/test/py/helloworld1 Warning: You are using a Python runtime (2.7) that is more recent than the production runtime environment (2.5). Your application may use features that are not available in the production environment and may not work correctly when deployed to production. INFO 2011-07-23 17:54:41,513 appengine_rpc.py:159] Server: appengine.google.com Allow dev_appserver to check for updates on startup? (Y/n): Y dev_appserver will check for updates on startup. To change this setting, edit /home/keisukeo/.appcfg_nag INFO 2011-07-23 17:54:52,541 appcfg.py:456] Checking for updates to the SDK. INFO 2011-07-23 17:54:53,428 appcfg.py:473] The SDK is up to date. WARNING 2011-07-23 17:54:53,428 datastore_file_stub.py:511] Could not read datastore data from /tmp/dev_appserver.datastore INFO 2011-07-23 17:54:53,431 rdbms_sqlite.py:58] Connecting to SQLite database '' with file '/tmp/dev_appserver.rdbms' INFO 2011-07-23 17:54:53,776 dev_appserver_multiprocess.py:637] Running application helloworld1 on port 8080: http://localhost:8080
初回実行時には似たようなメッセージになるはずです。
ちなみに、私の環境は Python 2.7 で、Google App Engine の本番環境 (一般的に日本語で言うところの 「本番環境」は "production environment" とか "production server" などと言います) では Python 2.5 なので、本番環境に移行したときに問題が発生するかもしれませんよ。 という旨の注意メッセージが表示されています。
上記のメッセージ内に書いてある通り、SDKの Python 開発サーバーは localhost の 8080 番でリスニングを開始していますので、 ブラウザで http://localhost:8080/ を要求して次のように表示されれば OK です。