2011年12月20日火曜日

今になってGAE+Djangoで開発を始めてみる

目的

とりあえず、最近、GoogleAppEngine + Django + FacebookAPIという、 わりとマニアックな環境で作業してて、情報の古さや、Google App Engine Helper for Djangoの中途半端な互換性に 苦しめられることが多いので、備忘録的な感じで気づいたことでも書いていこうと思う。
そして、どさくさに紛れて、自作アプリやらソフトやらの宣伝をしてやろうという魂胆

知っておくべきこと

導入したあとで、がっかりしないように知っておくべきこと、
  • ビューとURLの制御に関しては問題なし
  • データモデル(データベース操作)に関してはDjangoと互換性がない。
  • よって、Djangoのデータモデルを使用する機構も使用不可(authなども多分無理かな)
  • ただし、formに関しては互換性のあるモジュールが存在する。
GAEのデータモデルはかなり特殊なため、データモデル関連の機能はform以外全く使えません。 それに連動して、Django関連のライブラリも使えないものが多いです。 つまり、GAE上で今までにDjangoで作ったアプリを即動かせるぜ、ってわけじゃないので注意してください。

導入編

Google App Engine SDK for Python

ひとまず、本家のスタートアップサイトに従って、 こちらからGoogleAppEngineSDKを落として解凍します。 Django使うなら当然Pythonの方です。

Google App Engine Helper for Django

次に、ここ から、Google App Engine Helper for Djangoを落として解凍。実は、解凍したファイルそのものがGAE上で動くようにカスタマイズされたDjangoプロジェクトなので、cp -r なり何なりでディレクトリごとコピーして、適当に名前をつけます。ここではチュートリアルに従ってmysiteとでもしておく。

.google_appengineの設定

すでにDjangoに触った人なら、このまま、manage.py runserverで起動だ!と言いたいところですが、まだいくつかやることがあります。 まず、DjangoをGAE環境で実行するために、mysite下に.(どっと)google_appengineを自分で作ってやる必要があります。 .google_appengineディレクトリの先にGoogleAppEngineSDKが置いてあるものとして、そこからGAEのテストサーバーとか必要なファイルをとってきて、 実行してくれるわけです。じゃあ、解凍したGoogleAppEngineのディレクトリをまるごとコピーすればいいんだな、ってなるかもしれませんが、(別にそれでも問題ないはずですが)実際には、シンボリックリンクでオッケーみたいです。ln -s コマンドでもつかって、作っちゃいましょう。

ファイルの修正

2011年12月の段階では、地味にバグがあって、このままじゃ起動できません。appengine_djangoの__init__.pyの210行目あたりの、 appconfig, unused_matcher = dev_appserver.LoadAppConfig(PARENT_DIR, {})appconfig, unused_matcher, from_cache = dev_appserver.LoadAppConfig(PARENT_DIR, {}) に変更します。 どうやら、GAEの仕様が変わったのか戻り値の個数が変化して、バグっていたようです。

実行

さて、ここまでくれば、mysite下で、./manage.py runserverでテストサーバーを起動できます。 サイトによっては、Djangoのバージョンが・・・とか書いてありますが、現在のGAEはバージョン1.2のDjangoが標準で入っているので問題ないです。 localhost:8000/もしくはlocalhost:8080/にアクセスして、画面が表示されたら完了です。

0 件のコメント:

コメントを投稿