2012年9月16日日曜日

WebObjects + Heroku:その1・準備編

■残念なお知らせ■

HerokuにWebObjectsを載せることはできませんでした。ということで、この記事はHeroku超入門+WOLips超入門です。夢を見せてくれてありがとう…Single Directory Deploymentがサポートされていないとは思わなかったよ…。

■何を今更WebObjects■

「Herokuに対して直接WARをデプロイできる」ということを知ったのがキッカケでした。

Rubyに馴染みがないのでHerokuには触っていなかったのですが、Javaなら何とかなるしEclipse使えば必要最小限の作業でWARを吐き出せますからね。で、どうせWARを作るのであれば好きなフレームワークで試そうと思った次第です。

会社の仕事ともぶつからないし。

でもいきなりHerokuでWOを動かそうとしても上手く行かなかった場合に原因の切り分けが難しくなるので、1)まずHerokuを試し、2)TomcatのWARを作ってHerokuにデプロイ、3)最後にWebObjectsでWARを作ってHerokuで動かす…という段階を踏みます。

■Herokuとは■

HerokuはPaaSです。Ruby, Scala, Node.jsなどで書かれたプロセスをクラウド上で走らせることができます。バックエンドサービスとしてPostgresSQL, Hadoopなども使えます。1プロセスの起動時間(CPU時間ではなく起動している時間)として750時間、PostgresSQLの容量5MBまで無料で使うことができます。

詳しくは「FAQ:Herokuってなに?メリットは?」をご参照ください。

■Herokuアカウント取得■


Heroku.com」ページの右下にある「Sign up」をクリックします。日本の美しい風景が描かれたSign upページからemailアドレスを入力すると、招待メールが届きます。

メール上のリンクをクリックしパスワードを登録するとめでたくheroku Dashboardが表示されます。

左側にある「Download Heroku Toolbelt for Mac OS」をダウンロードしておきます。herokuコマンドラインツール, gitその他がインストールされます。インストールが終わったら、画面右側にあるようにheroku loginとタイプし、emailとpasswordでログインします。その次にherokuとの通信のための秘密キーを何にするか尋ねてきますので、番号で指定します。もしssh public keyがないと言われたら、KeyChainを使って作成してからもう一度。作成した後で
    $ heroku keys:add
を実行してキーを登録します。

確認のために画面下にあるコマンドを試してみます。Rubyのサンプルをgithubからとってきて、Herokuに上げます。

なお、4のところでRSAのパスワードを求められますが、間違えると以下のようメッセージが出て先に進めなくなります。
    Permission denied (publickey).
    fatal: The remote end hung up unexpectedly

その場合は間違ったキーを削除します。まず、以下のコマンドでKey名を表示し
    $ heroku keys
ここで出てきたkeyを
    $ heroku keys:remove keyname@domain
で削除し、下記コマンドで別のキーを登録しなおして
    $ heroku keys:add
もう一度4を実行します。間違えると勉強になるわ(泣

ともあれ、これでHerokuを使う準備ができました。Heroku Dashboardをみると、アプリが動いていることがわかります。アプリケーション名のリンクをクリックして、アプリケーション情報のページからOpen Applicationをクリックします。別ページが開いてHello, Worldが表示されればOKです。Herokuを無料で使えるのはWeb Dyno1本=インスタンス1本ですので削除しておきます。Settingsページの一番下からRemove Appしておきましょう。まぁ起動時間単位の課金なので、そんなに神経質になることもないのですが。

■HerokuのためのTomcat環境とサンプルを準備■

ここを参考にしました→「HerokuにEmbedded TomcatヘJava Web Applicationを作る

ただし、ここに掲載されているpom.xmlは壊れていてソースファイル名などにも記述漏れがあるので、上記記事の原本「Create a Java Web Application using Embedded Tomcat」からpom.xml, Main.java, HelloServlet.java, index.jspを拾ってきました。

ついでにTomcatも新しいのをインストールしなおしました。この辺が参考になりました→「[Tomcat]MacでのTomcatの環境構築」。最新は7.0.30ですが、Eclipse Tomcat pluginが対応していないので6.0.35を入れてください。

コマンドラインからsh target/bin/webappを実行してからブラウザでhttp://localhost:8080/を開き「Hello, Heroku!」の力強い文字w表示されればサンプルアプリの準備はOKです。ターミナルでctrl+C、ローカルで動いているアプリを止めます。

これで一応、ローカルでTomcatが動くようになりました。

■サンプルアプリをHerokuへ■

引き続き上記のページを参考にしながら、アプリをHeroku上で動かします。上記英語ページの「Deploy your application to Heroku」あたりから。同日本語ページにも記述があるのですが、ちょっと読みにくいかな…ともかく、あとはProcfile, system.propertiesを作ってコマンドをいくつか打ち込むだけです。最後のheroku openを実行すると、ブラウザ上にさきほどと同じ「Hello, Heroku!」が現れるはずです。お疲れ様でした。

■次回は■

慣れた人なら2-3時間でここまで来られると思うのですが、いくつかハマってしまって丸1日かかってしまいました…。

ということで、次回Tomcatアプリを作り、WARファイルを直接HerokuにDeployします。

0 件のコメント:

コメントを投稿