• ログインログイン
  • 新規登録新規登録

MENU

Google App Engine 上でDjangoを動かしてホームページを作る 第3回

連載Google App Engine 上でDjangoを動かしてホームページを作る

Google App Engine 上でDjangoを動かしてホームページを作る開発レシピです。無料でサーバーを利用できるGoogle App Engineを使い、DjangoというPython言語で書かれた枠組みを用いてホームページを作っていきます。

前回までのプログラミング学習コラムに続き3回目の勉強内容です。

前回はDjangoについて、Hello World!を表示するところまで説明しました。今回はGoogle App Engine のセットアップについて同じところまで説明できればと思います。

まずは開発環境の設定です。あまりいないとは思いますがGoogleアカウントを持っていない人はまずはGoogleにアカウント登録をしましょう。そのアカウントにログインした状態で、GAEのページの大きな「利用を開始する」ボタンをクリックします。

携帯認証をすると、アプリケーション登録画面が開きます。

アプリケーションidと、アプリケーションタイトルを記入しましょう。ここては、

id:yutakatraining

title:training

としました。公開範囲はデフォルトのままでいいと思います。Application identification IDは結構重要だったりします。今後、アップロードしたアプリケーションはhttp://アプリケーションid.appspot.comというurlに関連付けられるからです。さて、登録できたら、次のウィンドウが出てくるでしょう。

さて、ここでGoogle App Engineのページに戻ると、

見ての通り、先ほど登録したyutakatrainingというアプリケーションが反映されています。10個までなら同じアカウントでアプリケーションを作成できるようです。

ここまでで、googleのサーバー側にこちらが作ったコードをアップロードする場所を確保したことになります。今度は、自分のパソコンの方で、GAE用のコードを作成する環境を導入しましょう。

ここからGoogle App Engine SDK for pythonをダウンロードします。2013/10/21現在の最新版ですと、GoogleAppEngineLauncher-1.8.6.dmgがダウンロードされているはずです。クリックして展開すると、

Google App Engine Launcherのアイコンが出てくるのですが、このまま開くと、開けることには開けるのですが、エラーウィンドウがでてきます。ですから、Applicationディレクトリにこのアプリケーションを入れてください。ドラッグ&ドロップすればできているはずです。

さて、これで、Google App Engine Launcher とGoogle App Engine SDKがパソコンにインストールされたことになります。実際にはGoogle App Engine SDK を使ってコードを書くのですが、このファイルはどこに行ったのでしょうか?Google App Engine Launcher しか見当たりません。実は、Google App Engine Launcher を入れた時に自動的に

/usr/local/google_appengine

というディレクトリが作成されてあるはずです。ターミナルで見てみましょう。

google_appengineというディレクトリがあってその中にいろいろとファイルが格納されてあるのが確認できます。この中で使うのは、

dev_appserver.py

appcfg.py

の二つです。

dev_appserver.pyはローカルサーバー上でアプリケーションが動くか確認する時に使います。appcfg.pyは書いたコードをGoogle App Engineのサーバーにアップロードするときに使います。

ここまでで環境設定は終わりです。Hello Worldを表示するプログラムを書きましょう。

まず、どこか適当に新しいディレクトリを作ります。その中に、app.yamlという名前のファイルを作り、次のように書きます。

application: yutakatraining
version: 1
api_version: 1
runtime: python27
threadsafe: false

handlers:
- url: .*
script: hello.py

一行目には、アプリケーション登録の時に登録したid入れます。handlers以下でどのurlにどのコードがマッピングされるのかを決めます。ここで使っている「.*」はすべてのurlという意味です。つまり、http://applicationid.appspot.com以下にどんなurlが来ようと、hello.py(もちろんこれから書きます)が実行されるということですね。ですから例えば、ここを書き換えて、

handlers:
- url: /hello
script: hello.py

としたら、http://applicationid.appspot.com/hello  にアクセスした時にhello.pyが実行されることになります。もちろん、

handlers:
- url: /hello
script: hello.py
url: /bye
script: bye.py

上記のようにすることもできます。こうすれば、それぞれのurlに別々のプログラムをマッピングできるわけです。HTMLタグでリンクは飛ばせるので、こうすれば簡単にurlとコードのマッピングができますね。yamlは前回扱ったDjangoで言うとsettings.pyみたいなものと言えるでしょうか。.yamlファイルについて詳しくはここにあります。

では、hello.pyを書きましょう。app.yamlと同じくtrainingディレクトリの中に作ります。

training –- app.yaml
|
-- hello.py

hello.pyの中身はまずは簡単に以下のように打てばいいと思います。

#!/usr/bin/env python
#-*- coding:utf-8 -*-

print
print 'Hello world'

さてこれを保存したら、動かしてみましょう。動かす方法は二つあります。先ほど言った、dev_appserver.pyを使う方法と、Google App Engine Launcher を使う方法があります。ターミナルから一括して操作したい場合は前者です。まずgoogle_appengineディレクトリにtrainingディレクトリのリンクを貼ります。そして、google_appengineディレクトリ内で、

python dev_appserver.py training

を実行します。指定されたローカルサーバーのポートを開けば、見られます。後者の方法はもっと直感的でわかりやすりです。Google App Engine Launcherを開いて、そこにtrainingディレクトリをドラッグ&ドロップなりなんなりで入れます。左上のstartボタンを押すと、dev_appserver.pyを実行したと同じくローカルサーバーが起動します。近くのbrowseボタンで自動的にブラウザが開くので、確認できます。

前者の方法ですと、シムリンクを貼ったりする時になんらかを間違えることがあるので、後者の方がおすすめです。

さて、ローカルサーバーで動くことが確認できたので、これをGoogleのサーバー上にアップロードして公開しましょう。

先ほどの二つの方法でいうと、前者でしたら、python appcfg.py trainingを実行して、後者でしたら、Google Appe Enigine Launcher上の右上のdeployボタンを押すと、deployが実行されます。

ブラウザを開いて、http://yutakatraining.appspot.comにアクセスしてみましょう。

できました!

完全無料!

1で登録完了!

エンジニアの仕事・年収や選考ノウハウ記事が読めるほか、
会員にはプログラミング講習やES・面接対策などリアルな無料サポートも充実。
ここだけの求人情報も多数。

今すぐ新規会員登録
Page Top