Google App EngineでDjangoを使う Part1

Google App Engineで、フレームワークとしてDjangoを使うときの手順や設定などのメモ。

準備

App Engine Accountの取得

http://code.google.com/appengine/
App Engine Accountの取得は携帯電話のメールで認証をするみたいです。携帯電話必須?
てか宛先ドメインの一覧にiPhone(@i.softbank.ne.jpとか@me.comとか)が無いなんて止めてほしい。仕方なくもう1台のdocomoを使用。

必要なもの

それぞれをダウンロードしてインストールおよび設定をします。以降の説明は、デフォルトのインストールパスを想定しています。

プロジェクトの作成

プロジェクト名「ouipandatest」で「C:\Program Files\Google」フォルダにDjangoプロジェクトを作成
※プロジェクト名は各自変更して読み替えてください。同じ名前でApp Engineのサーバにアップロードすることはできません。

cd C:\Program Files\Google
django-admin.py startproject ouipandatest

settings.pyのROOT_URLCONFを「urls」に変更

ROOT_URLCONF = 'urls'

ouipandatestフォルダに以下の内容のファイルを作成
[app.yaml]

application: ouipandatest
version: 1
runtime: python
api_version: 1

handlers:
- url: /static
  static_dir: static

- url: /.*
  script: main.py

[main.py]

import logging, os

# Google App Engine imports.
from google.appengine.ext.webapp import util

# Force Django to reload its settings.
from django.conf import settings
settings._target = None

# Must set this env var before importing any part of Django
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'

import logging
import django.core.handlers.wsgi
import django.core.signals
import django.db
import django.dispatch.dispatcher

def log_exception(*args, **kwds):
  logging.exception('Exception in request:')

# Log errors.
django.dispatch.dispatcher.connect(
   log_exception, django.core.signals.got_request_exception)

# Unregister the rollback event handler.
django.dispatch.dispatcher.disconnect(
    django.db._rollback_on_exception,
    django.core.signals.got_request_exception)

def main():
  # Create a Django application for WSGI.
  application = django.core.handlers.wsgi.WSGIHandler()

  # Run the WSGI CGI handler with that application.
  util.run_wsgi_app(application)

if __name__ == '__main__':
  main()

App Engineのデバッグ用サーバ起動

python google_appengine/dev_appserver.py ouipandatest

http://localhost:8080/」にアクセスしてローカルで動作確認。PythonやDjangoの設定が正しければ「It worked!」と表示されるはず

アップロード

App Engineの管理画面(http://appengine.google.com/)で「ouipandatest」という名前のApplicationを作成(app.yamlの記述と合わせる必要があります。)

サーバにアップロード

cd C:\Program Files\Google
appcfg.py update ouipandatest/

http://ouipandatest.appspot.com/」にアクセスして動作確認。ローカルでの実行結果と同じく、「It worked!」と表示されるはず。