Mojolicious::Liteで作ったアプリをHerokuで動かす
2015年4月8日
@nqounetです。
Mojolicious::Liteに限らず、PerlのアプリはHerokuで簡単に動かせる、ということなので試してみました。
まとめ
1 | mkdir myapp && cd myapp |
heroku buildpack
Herokuではbuildpackという仕組みで、Perl製のウェブアプリも動かすことができます。
上で紹介した記事が推奨している https://github.com/pnu/heroku-buildpack-perl は使いやすいです。
cpanfile
依存モジュールを、cpanfileに書いておくと自動的にインストールされます。
1 | requires 'Mojolicious'; |
app.psgi vs Procfile
上記のbuildpackでは、基本的にはPSGIの規格に沿ったapp.psgiを用意する必要があるのですが、適切にProcfileを書けばapp.psgiは空でも問題ありません。(app.psgiという名前のファイルが存在すればbuildpackが有効になります)
その辺を利用して、Mojolicious::Liteで作成したアプリを(とりあえず)PSGIとして動かすようにProcfileに書いておきます。
上記のbuildpackでは、標準でstarmanがインストールされるので、それを利用します。
1 | web: starman --preload-app --port $PORT myapp.pl psgi |
hypnotoadで動かしたい
Mojoliciousのhypnotoadでも動作させられるのですが、portの設定をファイルに書く必要がある(コマンドのオプションでは指定できないっぽい)ので、ちょっと面倒です。
どうしてもhypnotoadで動かしたい場合は適宜お調べください。
Procfileの応用
app.psgiよりもProcfileが優先されるので、応用すればapp.plで起動するようなアプリを動かすことも可能ですよ。
1 | web: perl app.pl |
cpanモジュールを使う手もある?
実は、Mojolicious::Command::deploy::herokuを使うと簡単に動かせるらしいのですが…。
Deploy Perl Mojolicious web apps to Heroku
二段階認証に対応していないのか、私の環境ではうまく動作しませんでした。