Ubuntu 11.10でGoogle App Engine (Go)の環境をセットアップするのに手間取ったのでメモ。
Google App Engine SDKの取得
いまの最新版SDK1.6.0を落としてセットアップ。パスも適当に通す。
$ cd ~/lib $ wget http://googleappengine.googlecode.com/files/go_appengine_sdk_linux_386-1.6.0.zip $ unzip go_appengine_sdk_linux_386-1.6.0.zip $ PATH=$PATH:~/lib/google_appengine
Python 2.5のセットアップ
Google App Engineの開発用ローカルサーバー(dev_appserver.py)を正常に動作させるにはまだPython 2.5が必要なため、インストールする。ただUbuntu 11.10はもうPython 2.5を切りすててしまっているため、外部のリポジトリから入手する必要がある。
$ sudo add-apt-repository ppa:fkrull/deadsnakes $ sudo apt-get update $ sudo apt-get install python2.5 python2.5-dev
PILのセットアップ
PILがインストールされていないとdev_appserver.pyの起動時に"Could not initialize images API; you are likely missing the Python "PIL" module."というエラーが出るため、PILもインストールする。
$ wget http://effbot.org/downloads/Imaging-1.1.7.tar.gz $ tar xzf Imaging-1.1.7.tar.gz $ cd Imaging-1.1.7/ $ sudo python2.5 setup.py install
これであとは下のような感じでdev_appserver.pyを起動すればいける。
$ python2.5 ~/lib/google_appengine/dev_appserver.py server/
Python 2.7でやろうとすると
そもそもなんでこんなことを今さらやったかというと、Python 2.7でdev_appserver.pyを実行すると、ときたま落ちるから。試しにChannel APIを使おうとしたら↓のエラーで死ぬようになってしまったため、やはり正規のPython 2.5を入れる必要がでた、ということ。
INFO 2011-11-12 14:29:41,093 dev_appserver.py:2753] "POST /_ah/channel/connected/ HTTP/1.1" 404 - ---------------------------------------- Exception happened during processing of request from ('0.1.0.10', 80) Traceback (most recent call last): File "/usr/lib/python2.7/SocketServer.py", line 284, in _handle_request_noblock self.process_request(request, client_address) File "/usr/lib/python2.7/SocketServer.py", line 311, in process_request self.shutdown_request(request) File "/usr/lib/python2.7/SocketServer.py", line 459, in shutdown_request request.shutdown(socket.SHUT_WR) AttributeError: 'ChannelPresenceConnection' object has no attribute 'shutdown' ---------------------------------------- ERROR 2011-11-12 14:29:41,128 dev_appserver_main.py:664] Error encountered: Traceback (most recent call last): File "/home/masato/lib/google_appengine/google/appengine/tools/dev_appserver_main.py", line 657, in main http_server.serve_forever() File "/home/masato/lib/google_appengine/google/appengine/tools/dev_appserver.py", line 3527, in serve_forever self.handle_request() File "/home/masato/lib/google_appengine/google/appengine/tools/dev_appserver.py", line 3490, in handle_request self._handle_request_noblock() File "/usr/lib/python2.7/SocketServer.py", line 287, in _handle_request_noblock self.shutdown_request(request) File "/usr/lib/python2.7/SocketServer.py", line 459, in shutdown_request request.shutdown(socket.SHUT_WR) AttributeError: 'ChannelPresenceConnection' object has no attribute 'shutdown' Now terminating.