で、イロイロ踊らされてしまった内容をツラツラと書こうかと。
まず、前提条件としてGAEはPython2.5でないとイカンという有名な話がある。
Ubuntu10.04はPython2.6が標準インストールされている。
根が横着なので、Python2.6でGAEを動かそうと考えた訳で。
結論から言うとちゃんと動きました。App Engine SDK に手を加えることなく動きます。
何が問題だったかと言うと、まず、単純にSDKの最新版をダウンロードして適当なフォルダに解凍した。んでチュートリアルに従ってプロジェクトを作成し実行したら、下記エラーが発生した。
Warning: You are using a Python runtime (2.6) that is more recent than the production runtime environment (2.5). Your application may use features that are not available in the production environment and may not work correctly when deployed to production. INFO 2011-09-09 08:40:30,324 appengine_rpc.py:159] Server: appengine.google.com WARNING 2011-09-09 08:40:30,330 datastore_file_stub.py:512] Could not read datastore data from /tmp/dev_appserver.datastore INFO 2011-09-09 08:40:30,333 rdbms_sqlite.py:58] Connecting to SQLite database '' with file '/tmp/dev_appserver.rdbms' Traceback (most recent call last): File "google_appengine/dev_appserver.py", line 77, inrun_file(__file__, globals()) File "google_appengine/dev_appserver.py", line 73, in run_file execfile(script_path, globals_) File "/app_path/google_appengine/google/appengine/tools/dev_appserver_main.py", line 689, in sys.exit(main(sys.argv)) File "/app_path/google_appengine/google/appengine/tools/dev_appserver_main.py", line 653, in main default_partition=default_partition) File "/app_path/google_appengine/google/appengine/tools/dev_appserver.py", line 4971, in CreateServer server = HTTPServerWithScheduler((serve_address, port), handler_class) File "/app_path/google_appengine/google/appengine/tools/dev_appserver.py", line 4999, in __init__ request_handler_class) File "/usr/lib/python2.6/SocketServer.py", line 400, in __init__ self.server_bind() File "/usr/lib/python2.6/BaseHTTPServer.py", line 108, in server_bind SocketServer.TCPServer.server_bind(self) File "/usr/lib/python2.6/SocketServer.py", line 411, in server_bind self.socket.bind(self.server_address) File " ", line 1, in bind socket.error: [Errno 98] Address already in use
ここでちゃんとエラーを読んでググってればここで終わったのにちゃんと読まなかったため
ぁぁ、やっぱりPython2.5が要るんだなと判断しちゃって、瞑想しちゃいました。
ちなみに、このエラーはAddress already in useと出てて、アドレス使ってますよと言っています。
Tomcatをインストールしていて、それが自動起動しちゃってたため、ポート8080がかぶって起動しなかったのです。
それをPython2.5入れて、環境汚さないようにvirtualenv入れてとかイロイロやったけど、起動するときに
google_appengine/dev_appserver.py -p 8081 /app_pathで、起動しちゃいました。 なんか、どっと疲れた。 これから、ちょっとずつPythonやってなんかサイト作ります。