#このエントリは書きかけです。
自作のWebアプリケーションを公開・稼動させてはみたいが、自前でサーバを調達するのも嫌だし、LinuxだのJVMだのをインストールするのも嫌だという不精者の私であるが、そんな私のためのサービス..PaaS(Platform as a Service)であるHerokuを使ってみた。
PaaSというのは、アプリケーションを動作させるための環境をサービスとして提供するビジネスモデルで、詳しい説明はWikipediaに譲るとして、とにかくアプリケーションを送り付けるだけで、ホスティングして動かしてくれるというすごいシステムモデルなのである。
というわけで、PaaSに分類されるHerokuはもともとRuby on Railsとかをホスティングしていたらしいが、色々あってJavaとかScalaとかなんとかも使えるようになったらしい。今回はScala/JavaのWebアプリケーションフレームワークであるPlay!2.2.1を利用してアプリケーションをデプロイしてみた。
さて、Herokuはアプリケーションの転送にGitを利用する。それだけで使える状態にまで持っていける。
面倒なGUIの操作は極力しなくてもよいように設計されているようだ。
まずHerokuを利用できるようにするために、Herokuの公式サイトからHeroku Toolbeltをダウンロードする。これはHerokuをローカルから操作するためのコマンドラインツールだ(という認識)。
インストールそのものは非常に素直に進んだのでよしとする。
さて、Herokuにデプロイするアプリケーションのプロジェクトを作成しよう。
% play new . . . % git init
ここでアプリケーションを作っておく。
Gitにコミットもしておこう。
PlayアプリケーションをHerokuにデプロイするために、Procfileというのが必要になるらしい。
プロジェクトのルートディレクトリにProcfileを作成しよう。
% echo 'web: target/start -Dhttp.port=${PORT}' > Procfile
*1
HerokuにデプロイするのにGitを使うことは分かったが、普段のSSHとHerokuのデプロイに使う鍵は、セキュリティ上の観点から分けたい。
転送に使うRSAの鍵を生成しておこう。
% cd ~/.ssh/ % ssh-keygen -C 'rsa key for heroku' -f heroku_id_rsa . . . % cd /path/to/web/application
ここでHerokuにユーザー登録しておこう。
つづいて、Herokuにログインする。
% heroku login Enter your Heroku credentials. Email: piyopiyo@example.com Password:
さてさて、ようやくHerokuのお出ましだ。
Herokuにアプリケーションを作成する。
% heroku create Creating hoge-fuga-8492... done, stack is cedar http://fuga-8492.herokuapp.com/ | git@heroku.com:fuga-8492.git Git remote heroku added
自動的にGitのリモートレポジトリ"heroku"が追加される。以後のデプロイ操作はここにローカルレポジトリをpushするかたちで行なわれる。
ちなみにアプリケーション名が適当に設定されるが、あとからHerokuのダッシュボードから変更できるので放置。
あとは git push heroku masterとすることでデプロイできる。
デフォルトではmasterブランチがデプロイされるが、他のデプロイ専用ブランチを設定しておきたいときは
% git push heorku BRANCHNAME:master
と書く。
自作のライブラリを利用する
さて、自作のライブラリをアプリケーションから呼び出したいときがある。
sbtからpublish-localでローカルレポジトリに生成することが多々あるが、herokuからは認識しないので、何らかの方法で認識させねばららない。
lib/にJARをぶちこむのが手軽だが、わざわざコピーするのも癪なので、ここではGitHubをMavenレポジトリとして利用し、sbtから認識させ自動ダウンロードさせるまでを実行する。
http://qiita.com/bounscale/items/44b1729db39edbb507fd
ここの受け売り。