2013年5月21日
Perl製のWebアプリケーションをherokuで3分で動かすの法
PSGIアプリなら簡単にherokuで動かせます。
Miyagawaさんのbuildpack(https://github.com/miyagawa/heroku-buildpack-perl)を 使います。使い方もREADMEに書いてあったけど、以下にも書きます。
アプリ側の準備
deployしたいアプリケーションのgitリポジトリ上で以下をやります。
cpanm --installdeps .
で依存モジュールがちゃんと入るようにする(cpanfile使うのがオススメ)- アプリ起動用のapp.psgiを配置する
herokuにアカウントを作る
toolbeltを入れる
インストールが終わるとherokuコマンドが使えるようになります。
% heroku login
と打ってコマンドライン上でherokuにログインします。(鍵の登録とかよしなにやってくれる)
アプリを登録する
gitリポジトリ上で以下のように打って登録します。
% heroku create appname --buildpack https://github.com/miyagawa/heroku-buildpack-perl.git
ここの、”appname”がherokuappのサブドメインとしてグローバルに登録されるので注意。どういうことかと
いうと、僕が % heroku create ukigumo
とかやったら、http://ukigumo.herokuapp.comがしれっと
取れてしまいました。
—buildpackの指定が面倒くさくて、「オレはperlでしかherokuに上げないぜ!」って いう強者は以下のようにすれば、defaultのbuildpackを指定できる模様。
% heroku config:set BUILDPACK_URL=https://github.com/miyagawa/heroku-buildpack-perl.git
アプリをデプロイする
先ほどのコマンドで、gitのherokuのremote repositoryが追加されています。そこにgit pushすれば commit hookが走ってアプリがデプロイされるオシャレ仕様。
% git push heroku master
enjoy!
落穂広い
動作環境は?
system perlの5.10でapp serverはStarmanです。
任意のバージョンのPerlを使えるようにするみたいな案はあって、issueは上がっています。
https://github.com/miyagawa/heroku-buildpack-perl/issues/3
上のissueでは参考例としてNodeが上がっていますが、これは他のEC2のインスタンスでコンパイル したバイナリを使うというかなり強引で頑張った作りになっているようです。
誰か頑張ってみてください。
お金かからないの?
単一アプリケーションを何のオプションも無く動かた場合は、ギリギリ無料範囲に収ま るようになっているみたいです。以下の資料が参考になりました。