Google App Engin SDK で開発サーバーが起動しない場合の解決法
臨時プログラミング勉強会@渋谷ルノアールです。
前回のエントリーで、Google App Engin SDKをインストールしたものの、開発サーバーが起動しなかった件について、ようやく解決したので記載しておきます。
いくつかの要因がありますが、まず素人がプログラミングする際にどうしても壁となりやすい下記の条件が不幸なことに重なってしまってました。
1.インストールしたGoogle App Engine(以下GAE)のバージョンが最新のものだが、参考にしていた本に記載されているのは古いバージョンであったこと
2.本で記載してあるPythonのバージョンが古く、自分が学習しているPythonのバージョンとは違っていたこと
3.自分がこれまで学習していたPythonのバージョンが2.6のもので、GAEではPythonのバージョン2.5までしかサポートしていなかったこと
3つのポイントそれぞれでズレが生じており、どれかに1本化する必要がありました。当然のことながら、GAEで動かすことがゴールですから、GAEのルールに合わせることにします。
まず、Python2.6.2(※自分が使ってたもの)をアンインストールして、Python2.5.4をインストールしました。(インストールはコチラ:http://python.org/download)
インストール後、システムのプロパティより環境変数の編集をします。編数名のPathの後ろに次のように記述します。
;C:\Python25;C:Python25\Scripts
アプリケーションのディレクトリと app.yaml 設定ファイルがあれば、dev_appserver.py コマンドで開発用 Web サーバーを開始できるということなので、これらを設定します。
とりあえず自分は、Cドライブ直下に、テスト用のディレクトリを作りました。
C:\test_log
上記のディレクトリの中に、app.yamlファイルを置きます。GAEのチュートリアルでサンプルがあるのでそれを利用しつつ、若干書き換えます。
http://code.google.com/intl/ja/appengine/docs/python/config/appconfig.html
application: test-log version: 1 runtime: python api_version: 1 handlers: - url: /styles static_dir: styles - url: .* script: main.py
続いて、PythonでHello Worldと出す命令文を書きます。test.pyとでも名前を付けて、C:\test_log_logに保存します。
#!/usr/bin/env python # -*- coding: utf-8 -*- import os import wsgiref.handlers from google.appengine.ext import webapp from google.appengine.ext.webapp import template class IndexHtml(webapp.RequestHandler): def get(self): path = os.path.join(os.path.dirname(__file__),'index.html') template_values = {} template_values['messeage'] = 'Hello, world!' self.response.out.write(template.render(path,template_values)) def main(): application = webapp.WSGIApplication([('/', IndexHtml)], debug=True) wsgiref.handlers.CGIHandler().run(application) if __name__ == '__main__': main()
続いては、C:\test_log_log内にindex.htmlを用意。Hello,World!を出すだけなので適当で大丈夫です。こんな感じ。。
<html> <head> <title>テストログ</title> </head> <body> <div id="head"> <a href="/">テスト中</a> </div> <div id="content"> <p>{{ messeage }}</p> </div> </body> </html>
あとは、作成したものを開発サーバーで実行します。コマンドプロンプトを起動し、下記のコマンドを入力してください。
使用するコマンド cd \ (第1階層まで戻ります) cd.. (いまの階層よりも1つ階層が戻ります) cd ディレクトリ名 (指定したディレクトリへ進んでいきます)
上記のコマンドを使いながら、google_appengineの階層まで進んでください。一気に階層は進めません。cdコマンドで1ずつ階層を進んでください。そこまで進めば、>以降のコマンドは一気に書いて実行です。
C:\Program Files\Google\google_appengine>python dev_appserver.py \test_log
そうすると、コマンドプロンプトに次々とメッセージがでるはず。y/nを尋ねられるので、そこはyを選択してください。
Running application test_log on port 8080: http://localhost:8080
と表示されたらOK。あとはhttp://localhost:8080にアクセスして、HTMLにHello,Worldが出ていたら成功です。
ここに来るまで、丸1日かかってしまいましたが、解決方法を自分で考えてチャレンジしてみることは、いい経験だったのではないかと思います。