« ジンバブエドルとギャンブルに関するお役立ち情報です | メイン | Params::TinyとHash::MultiValue、もしくは本物のTinyについて »

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にアカウントを作る

https://www.heroku.com/

toolbeltを入れる

https://toolbelt.heroku.com/

インストールが終わると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のインスタンスでコンパイル したバイナリを使うというかなり強引で頑張った作りになっているようです。

誰か頑張ってみてください。

お金かからないの?

単一アプリケーションを何のオプションも無く動かた場合は、ギリギリ無料範囲に収ま るようになっているみたいです。以下の資料が参考になりました。

http://www.slideshare.net/shunjikonishi/heroku-15670119

投稿者 Songmu : 2013年5月21日 22:59