§Heroku へのデプロイ
Heroku はクラウド・アプリケーション・プラットフォーム - つまり web アプリケーションをビルドし、デプロイするひとつの方法です。
まず始めに以下の作業を行います。
§アプリケーションを git で保存する
$ git init
$ git add .
$ git commit -m "init"
§Heroku 上で新規アプリケーションを作成する
$ heroku create
Creating warm-frost-1289... done, stack is cedar
http://warm-1289.herokuapp.com/ | [email protected]:warm-1289.git
Git remote heroku added
これで、新しいアプリケーションが、 HTTP (と HTTPS) のエンドポイントおよび Git のエンドポイントと一緒に提供されます。 Git エンドポイントは Git リポジトリの設定に heroku
というリモートリポジトリとして登録されています。
§アプリケーションをデプロイする
Heroku にアプリケーションをデプロイするため、ローカルレポジトリを heroku
という名前のリモートレポジトリへ git push してください。
$ git push heroku master
Counting objects: 34, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (20/20), done.
Writing objects: 100% (34/34), 35.45 KiB, done.
Total 34 (delta 0), reused 0 (delta 0)
-----> Heroku receiving push
-----> Scala app detected
-----> Building app with sbt v0.11.0
-----> Running: sbt clean compile stage
...
-----> Discovering process types
Procfile declares types -> web
-----> Compiled slug size is 46.3MB
-----> Launching... done, v5
http://8044.herokuapp.com deployed to Heroku
To [email protected]:floating-lightning-8044.git
* [new branch] master -> master
git push が完了すると、 Heroku は sbt clean stage
を実行して、アプリケーションをビルドします。初回のデプロイ時には、全ての依存モジュールがダウンロードされるため、多少の時間がかかります。(2回目以降のデプロイ時はキャッシュが使われます。)
§アプリケーションがデプロイされたことを確認する
では、デプロイしたアプリケーションの状態を確認してみましょう。
$ heroku ps
Process State Command
------------ ------------------ ----------------------
web.1 up for 10s target/universal/stage/bin/myapp
Web プロセスが起動しています。次は、詳細を確認するため、ログを見てみましょう。
$ heroku logs
2011-08-18T00:13:41+00:00 heroku[web.1]: Starting process with command `target/universal/stage/bin/myapp`
2011-08-18T00:14:18+00:00 app[web.1]: Starting on port:28328
2011-08-18T00:14:18+00:00 app[web.1]: Started.
2011-08-18T00:14:19+00:00 heroku[web.1]: State changed from starting to up
...
問題なしのようです。さらに以下のコマンドを実行すると、ブラウザが起動してデプロイした Web アプリにアクセスすることができます。
$ heroku open
§データベースに接続する
Heroku では Heroku アドオン を通して沢山の RDBMS や NoSQL データベースを提供しています。 Heroku の Play アプリケーションは Heroku Postgres データベースを自動で提供しています。 Play 2 アプリケーションで Heroku Postgres データベースを使うように設定するには、まずは PostgreSQL JDBC ドライバをアプリケーションの依存性 (project/Build.scala
) に追加します。
"postgresql" % "postgresql" % "9.1-901-1.jdbc4"
そして、プロジェクトのルートディレクトリに Procfile
(“P” は大文字) というファイルを以下の内容で作成します (myapp
は自身のプロジェクト名に置き換えてください):
web: bin/myapp -Dhttp.port=${PORT} ${JAVA_OPTS} -DapplyEvolutions.default=true -Ddb.default.driver=org.postgresql.Driver -Ddb.default.url=${DATABASE_URL}
この設定で、 web
というプロセスでは Play を起動し applyEvolutions.default
、 db.default.driver
それと db.default.url
設定をオーバーライドするように Heroku に指示します。 Procfile
コマンドは最大で 255 文字である事に注意して下さい。代替手段として 本番向けの設定 ページに書かれている -Dconfig.resource=
および -Dconfig.file=
を使用します。