ClojureでGoogle App Engine Webアプリケーションの作成
Google App EngineのWebアプリをClojureで簡単に作成できるか試してみた。
appengine-magic
appengine-magicを使うと簡単そうだな。
https://github.com/gcv/appengine-magic/tree/
Getting Startedに従って、作ってみよう。
Google AppEngine SDKのインストール
Python版とJava版があるが、Java版をダウンロードする。
~/optにappengne-java-sdk-1.4.0を解凍する。
~/opt/appengine-java-sdk-1.4.0/binにPATHを通す。
Hello,world!を作る
まずはHello,world!を作ってみるよ。
不要ファイルの削除
src/hello/core.cljは後でappengine-magicで生成するので、削除する。
$ rm src/hello/core.clj
依存ライブラリの取得
project.cljを編集し、:dev-dependenciesに次のライブラリを追加する。
:dev-dependencies [ [appengine-magic "0.3.2"] ]
依存ライブラリを取得し、appengine-magicプラグインを有効にする。
$ lein deps
デフォルトファイルの作成
appengine-newタスクを実行し、次のデフォルトファイルを作成する。
$ lein appengine-new
動作確認
REPLを起動する。
user=> (use 'hello.core) nil user=> (require '[appengine-magic.core :as ae]) nil user=> (ae/start hello-app) 2011-01-15 10:11:10.314:INFO::Logging to STDERR via org.mortbay.log.StdErrLog 2011-01-15 10:11:10.371:INFO::jetty-6.1.x 2011-01-15 10:11:14.795:INFO::Started SocketConnector@0.0.0.0:8080 #<Server Server@62fb35> user=>
ブラウザで http://localhost:8080/ を表示する。
「Hello, world!」が表示されればOK。
サーバ停止は
user=> (ae/stop)
ポート番号を変えるには、
user=> (ae/start foo-app :port 8095)
開発用サーバでのテスト
エントリポイントのサーブレットをコンパイルし、アプリケーションのjarファイルを作成する。
このjarファイルと依存ライブラリをresorces/WEB-INF/libへコピーする。
$ lein appengine-prepare
開発用サーバを起動する。
$ dev_appserver.sh resources/ ..snip.. 情報: Started SelectChannelConnector@127.0.0.1:8080 2011/01/15 1:35:05 com.google.appengine.tools.development.DevAppServerImpl start 情報: The server is running at http://localhost:8080/
ブラウザで http://localhost:8080/ を表示する。
「Hello, world!」が表示されればOK。
Google App Engineへのデプロイ
resouces/WEB-INF/appengine-web.xmlのapplicationに公開するアプリケーションIDを設定する。
hogehoge-appを取得していれば、
<application>hogehoge-app</application>
を設定する。
アプリケーションをデプロイする。
$ appcfg.sh update resources/
..snip..
Email: メールアドレスを入力
Password for 入力したメールアドレス: パスワードを入力
..snip..
Update completed successfully.
Success.
Cleaning up temporary files...
http://アプリケーションID.appspot.com/ にアクセスしてみる。
「Hello, world!」が表示された。
動いた。\(^▽^)/