Hatena::Diary

スタジオズブリ

2009-08-21

無料かつ(おそらく)最速であなたのWebアプリケーションを世界に公開する方法

01:01

無料なのは間違いないが、(おそらく)最速にしてあるところがミソ。


魔法使いに必要なもの

魔法使いに必要でないもの

前提



そんじゃあ始めます。俺の環境がLinuxなので、WinMacを使ってる方は適宜読み替えてね。



1、まずGoogle App Engineアカウントを取得する。アプリケーションを適当に登録する。


Googleアカウントがない人はまずそこから。既に持ってる人はGoogle App Engineに登録するだけ。特に説明することはない。アプリケーションを登録し、ID(app id)を控えておくこと。



2、Google App Engine SDK for Javaダウンロードインストールする。


これもあまり問題ないと思われる

http://code.google.com/intl/ja/appengine/downloads.html

以下、~/gae/sdkSDKインストールされており、~/gae/sdk/binにPATHが通してある前提で。



3、JRubyおよびSinatraの実行環境を用意する。


これを自分でやると面倒なので、エラい人の肩に乗っかります

http://jugyo.org/blog/3388

基本的にはこのページ上部に貼ってある、githubのページに飛んで

http://github.com/jugyo/sinatra_on_gae/tree/master

中の上あたりに「fork」「watch」「download」のボタンがあるので、downloadをクリッコしてzipファイルを落とす → そいつを展開 → 展開したディレクトリを例えば ~/gae/app とする。

~/gae/app 以下に、README.text(f)ileってファイルとWEB-INFというディレクトリがある状態が、正解。


ちなみにWEB-INFの中身はこうなってる

つまり、WEB-INF以下にいわゆるJava実行環境以外のものが全部突っ込んであるってこと。Google App Engine(以下GAE)ではAmazon EC2みたいにサーバインスタンスを一個まるまる借りるわけではないので、「サーバJRubyインストールし、それを使う」なんてことはできない。だから、アプリケーションに必要なものは全て特定のディレクトリにぶち込み、それらをまるごとGAEアップロードする形になる。(chroot jailみたいなイメージ。全然違うけど。)


なので、アプリケーションでrubygemを使いたい場合は、gem install -i ~/gae/app/WEB-INF/gems "gemname" --no-rdoc --no-ri のようにして、WEB-INFの下のgemsディレクトリgemを直接ぶち込み、一緒にアップロードする。アップロードできるファイルの数に制限があるので、gems以下にできたbinとかcasheとかdocディレクトリには富竹さんと同じ目にあってもらう。



4、設定ファイルをちょちょいとイジってアップロード


appengine-web.xmlの以下の部分を自分のapp idに合わせて改訂

<application>[Your Application Identifier]</application>

で、


appcfg.sh update ~/gae/app



これであなたのアプリが、http://[Your Application Identifier].appspot.com/にデプロイされましたとさ。



Google先生「あとは俺にまかせて、お前は先に行け!」



ちなみに情報系ボンクラ修士2年でGAEを全く触ったことがない俺は30分くらいでサンプルアプリデプロイに成功しました。ハードウェアを用意する手間(Google先生が低減)、実行環境を用意する手間(jugyoさんにより低減)、アプリを作成する手間(Sinatraにより低減)、デプロイする手間(Google先生がry)、それらを合算すると他の方法に比べて(おそらく)最速なのではないでしょうか。



同梱されてるSinatraのサンプルアプリはこんな感じ


require 'rubygems'

require 'sinatra'

get '/' do

 'Hello World!!'

end


これだけで、/(アプリのルートディレクトリ)にhttp GETをかけると"Hello World!"と返すアプリになります。Railsガチムチっぷりと比べると、おそろしいお手軽さ。そのうちSinatra本体についてもなんか書きます。


http://www.sinatrarb.com/

トラックバック - http://d.hatena.ne.jp/zentoo/20090821/1250870502
おとなり日記