現在、Play Frameworkを勉強中ですが、公式ドキュメントを参考にHerokuで動かそうとしてみたら、ドキュメントの情報が古かったためかテンプレートそのままのプロジェクトを動かすのにかなり時間がかかりました。
最新版のPlayをHerokuで動かすまでの情報がまとまっているページも見つからなかったため、備忘録としてまとめました。
環境
- Mac OS X El Capitan
- Play Framework 2.5.6
- Heroku Toolbelt 3.43.10
- Heroku CLI 5.2.40
- Playのテンプレートは
play-java
を使用
プロジェクトの作成
ターミナルから以下のコマンドを実行。
$ activator new [project-name] [template-name]
テンプレート名は、play-java
など。分からなければ入力しないでおくことで、対話的に選択できます。
プロジェクト名にはアルファベット大文字を使わないことをオススメします(入っていてもいいですが、あとでProcfile
がややこしくなります)。
とりあえず実行
$ cd project-name
$ activator run
http://localhost:9000 を開いて少し待てば、"Your new application is ready."と書かれた緑色のページが表示されるはず。
Procfileを作成する
Herokuで動作させるために、プロジェクトのルートディレクトリに、Procfile
というファイルを作成し、以下の内容を1行だけ書き込みます。
web: target/universal/stage/bin/[project-nameを小文字で] -Dhttp.port=${PORT} -Dplay.crypto.secret=${APPLICATION_SECRET}
[project-nameを小文字で]
の部分だけ変更してください。
もしプロジェクト名にアルファベット大文字を使用している場合は、ここだけ小文字に直して書き込みます。
また途中に改行を入れないでください。改行の前にバックスラッシュを入れても動きませんでした。
gitローカルリポジトリを作成
$ git init
$ git add .
$ git commit -m "init"
Herokuのアプリを作成する
Heroku Toolbeltが使用できる場合は、コマンドラインから作業できます。
ない場合はブラウザ版のHerokuからどうぞ。
$ heroku create
先にgit init
しておくと、ここで勝手にgit remote add heroku
してくれます。
Herokuのアプリに、Application Secret キーを設定
$ heroku config:add APPLICATION_SECRET=[適当な文字列]
キーはとりあえずここでしか使いません。また忘れてもHerokuの設定から確認できるので、てきとーに入力してください。
Herokuブラウザ版から設定する場合は、Settings/Config Variables から、KEY=APPLICATION_SECRET を追加してください。
[16.9.11 追記] Activatorにもキーを生成する機能がありました。
$ activator playGenerateSecret
[info] Generated new secret: DHM@4lP?(略)
$ heroku config:add APPLICATION_SECRET="DHM@4lP?(略)"
Herokuへpush・デプロイ
$ git push heroku master
pushに続いてビルド・デプロイが走ります。
うまくデプロイできたようなら、
$ heroku open
でアプリを開いてみましょう。
"Your new application is ready."と書かれたそっけないページが表示されれば完了です。