sessanの日記

主に開発技術関連でお勉強したことをまとめていくサイトです。

Google App Engineでのdjango nonrelアプリ環境構築

前回、sessanの日記でGoogle App Engine上でdjangoを使いたい場合にdjango nonrelを使えば良さそうだと調査した結果を紹介した。

今回は、実際にdjango nonrelの環境をGoogle App Engineの開発環境上に作り、空っぽのアプリを動かすところまでやろうと思う。

基本的には以下のdjango nonrelのサイトの通り。

djangoappengine - Django App Engine backends (DB, email, etc.) | All Buttons Pressed

ただ、その前にMac OSX上でpython2.5をインストールするのと、Google App EngineのSDKをインストールしておく必要がある。

python 2.5のインストール

Google App Engineは実験的にpython 2.7をサポートし始めているが、まだ、正式にはサポートしていない。なので、今開発をする場合、python2.5を使ってプログラミングする必要がある。

Mac OSXにもpythonはインストールされているが、自分のLion環境ではデフォルトのバージョンは2.7になっていた。

なので、まずはMacPortsを使ってpython2.5をインストールしておく。
これは簡単でMacPortsが入っていれば以下のコマンドを打つだけ。

sudo port install python25

python_selectのインストール

python25をインストールしただけでは、それがデフォルトとして設定されることはなく、rubyのrvmみたいにpythonのバージョンを切り替えるためのコマンドを使う必要がある。そのためにpython_selectを使う。
僕の場合は、なぜかpython_selectが最初から入っていたのでインストールはしていないが、これもMacPortsを使ってインストール出来る。

sudo port install python_select

python_selectはportコマンドから以下のように使う

  • 選択可能なpythonのバージョンを見たいとき
> port select --list python

Available versions for python:
	none
	python25 (active)
	python25-apple
	python26
	python26-apple
	python27
	python27-apple
  • システムで使うデフォルトのpythonのバージョンをpython 2.5にしたいとき
> sudo port select --set python python25

Password:
Selecting 'python25' for 'python' succeeded. 'python25' is now active.

ちなみに、僕はpythonの開発では、有料だけど、JetBrains社のPyCharmが便利なので使っている。
Python IDE & Django IDE for Web developers : JetBrains PyCharm

PyCharmで使うpythonのバージョンを追加する場合は、[Preferences] -> [Python Interpreter]の画面で[add]したのち、それを設定する。ちなみにこの設定はPyCharmのプロジェクトごとの設定である。

http://cdn-ak.f.st-hatena.com/images/fotolife/s/sessan/20111103/20111103185719_original.png

ここでもインストールしたpython 2.5を使用するように設定しておく。

Google App Engine SDKのインストール

Google App Engine SDKは以下からダウンロードしてインストールする。
インストーラに従ってインストールするだけ。

Downloads - Google App Engine — Google Developers

Google App Engine用のプロジェクト作成

作り方は色々あると思うけど、Mac OS XならGoogleAppEngine Launcherから作るのが簡単。

http://cdn-ak.f.st-hatena.com/images/fotolife/s/sessan/20111103/20111103185720_original.png

django nonrel用の各種ファイルをGoogle App Engine用のプロジェクトに追加

djangoappengine - Django App Engine backends (DB, email, etc.) | All Buttons Pressed

上のサイトのInstallのところに従って、以下のzipファイルをダウンロード。
(Mercurialでリポジトリからcloneを取ってきても良い)

  • django-nonrel
  • djangoappengine
  • djangotoolbox
  • django-autoload
  • django-dbindexer
  • django-testapp


さらに手順に従って、zipファイルを解答したフォルダから以下のようにGoogle App Engine用のプロジェクトフォルダに中身をコピーしていく。

  • django-nonrel/django => /django
  • djangotoolbox/djangotoolbox => /djangotoolbox
  • django-autoload/autoload => /autoload
  • django-dbindexer/dbindexer => /dbindexer
  • djangoappengine => /djangoappengine


注意すべきなのは、djangoappengineだけは、解凍したフォルダ(wkornewald-djangoappengine-tip)をリネームして、djangoappengineフォルダとしてプロジェクトのサブフォルダとして追加する点。

それ以外は、解凍したフォルダの同名のサブフォルダをプロジェクトのフォルダにコピーすればよい。

結局、以下のようなフォルダ構成になる。

  • /django
  • /djangotoolbox
  • /autoload
  • /dbindexer
  • /djangoappengine


僕の場合は、django-testappのルートディレクトリから以下のファイルもプロジェクトのルートフォルダ内にコピーした。(つまり全部コピーした)

  • __init__.py
  • app.yaml
  • cron.yaml
  • index.yaml
  • idexes.py
  • LISCENSE
  • manage.py
  • settings.py
  • templates (→これはファイルではなくフォルダ)
  • urls.py

app.yamlの設定がpython27を使うようになっていたので、Google App Engineのデフォルトのpythonを使うように修正する。

  • app.yaml(抜粋)
runtime: python27

となっていたのを、

runtime: python

に修正。

プロジェクトの起動と動作確認

この後、PyCharmでこのプロジェクトを読み込み、プロジェクトを起動する。
ちなみに、djangoappengine - Django App Engine backends (DB, email, etc.) | All Buttons PressedによるとGoogle App Engine用のdev_appserver.pyを使って起動するのはダメだそうだ。django用のmanage.pyを使って起動するのが正しいやり方だと説明されている。

PyCharmでプロジェクトをdjango用のプロジェクトと認識させるためには、まず、djangoサポートをenableに設定しておく必要がある。

http://cdn-ak.f.st-hatena.com/images/fotolife/s/sessan/20111103/20111103185721_original.png


さらに、起動するための設定を行う。

まずは、PyCharmの上部のメニューから起動の設定を行う。下の写真のように「Edit Configurations」を選択する。

http://cdn-ak.f.st-hatena.com/images/fotolife/s/sessan/20111103/20111103185722_original.png

そして、左上の「+」ボタンからdjango serverを起動するための設定を追加し、デフォルトのままアプリ名だけ記入する。(下の画像は、django testsを選択しているけど、django serverを選択する。)

http://cdn-ak.f.st-hatena.com/images/fotolife/s/sessan/20111103/20111103185723_original.png

そしたら、再生ボタンを押してdjangoアプリを起動する。

起動できたら、以下のような画面になる。

http://cdn-ak.f.st-hatena.com/images/fotolife/s/sessan/20111103/20111103185724_original.png


これで、今日は終わり。

次回は、djangoの機能を使ってDBにデータを保存する部分を試してみようと思う。