GAE+Django Django-nonrelで開発サーバー起動&アップロード
Django-nonrelのドキュメントの和訳が終わったので、実際に使ってみます。
自分のマシンはPuppy Linuxを使っている関係で以下のような構成になっています。
参考にする場合は各自の構成に読み替えてください
/mnt/sda2/workspace Eclipseワークスペース
/mnt/sda2/apps/google_appengine GAE/Python SDK
1.前準備
SDKは1.3.8を使います(最初1.3.7を使っていましたがエラーで動きませんでした)
SDKにパスを通しておきます。
export PATH=$PATH:/mnt/sda2/apps/google_appengine
またDjango-nonrelのサイトからファイルをダウンロードして展開しておきます。
django-nonrel
djangotoolbox
django-dbindexer
djangoappengine
django-testapp
自分は/mnt/sda2/apps/gae-djangoというフォルダを作ってそこにすべて置きました。
2.Eclipseでプロジェクトを作成する
Eclipse上で開発できるようにします。
ただ、Django-norelのマニュアルに「dev_appserver.pyを直接使わないでください」とあるので、PydevプラグインのGAEプロジェクト機能は使えません。
通常のPydevプロジェクトを作成することにします。
・新規>その他>Pydev プロジェクト
今回はdjango_testというプロジェクト名で作成します。
3.Django-nonrelのファイルをプロジェクトフォルダにコピーする
Django-nonrelのファイルをコピーまたはシンボリックリンクを作成します。
自分は以下のようなスクリプトを作成して行いました。
/mnt/sda2/apps/gae-django/setup.sh
#!/bin/sh
DJANGO_GAE=/mnt/sda2/apps/gae-django
ln -s ${DJANGO_GAE}/django-nonrel/django django
ln -s ${DJANGO_GAE}/djangotoolbox/djangotoolbox djangotoolbox
ln -s ${DJANGO_GAE}/django-dbindexer/dbindexer dbindexer
ln -s ${DJANGO_GAE}/djangoappengine djangoappengine
プロジェクトフォルダで実行
cd /mnt/sda2/workspace/django_test/src
/mnt/sda2/apps/gae-django/setup.sh
4.開発サーバーの実行
PydevのGAE機能が使えれば簡単に実行できますが、残念ながら自分で実行設定を作る必要があります。
・左側のプロジェクトビューアでsrcフォルダを右クリック
実行>実行の構成
・Python Runをダブルクリック
・メイン>プロジェクト名 プロジェクトを指定します。ここではdjango_test
・メイン>メイン・モジュール 参照ボタンから、/src/manage.pyを選択
・引数>プログラムの引数 runserverと入力します
・引数>作業ディレクトリ ワークスペースボタンから、/django_test/srcを選択
・環境>設定する環境変数 新規ボタンから、PATH=$PATH:/mnt/sda2/apps/google_appengineを追加
・共通>お気に入りのメニューに追加 実行とデバッグをチェックします
これで画面上の実行アイコンから追加した構成を選べば開発サーバーが起動するはずです。
*起動しない場合
自分の場合、Incorrent timezone settingとか出てエラーになりました。
linux版の場合タイムゾーンの設定で/usr/share/zoneinfoフォルダを見ていて、ここにない設定だとエラーになるようです。
settings.pyに
TIME_ZONE = 'Asia/Tokyo'
を追加したところ動作しました。
5.アップロード
これもPydevの機能が使えないのでコマンドラインから。
事前にhttps://appengine.google.com/にアクセスしてアプリケーションを作成し、取得したIDをapp.yamlに反映させておきます。
コマンドラインから、
cd /mnt/sda2/workspace/django_test/src
./manage.py deploy
Eclipseを使おうとすると少し面倒な設定が必要ですが、まあ慣れれば問題ないレベルでしょうか。