Documentation

You are viewing the documentation for the 2.3.x release series. The latest stable release series is 2.4.x.

§Heroku へのデプロイ

Heroku はクラウド・アプリケーション・プラットフォーム - つまり web アプリケーションをビルドし、デプロイするひとつの方法です。

まず始めに以下の作業を行います。

  1. Heroku Toolbelt をインストールする
  2. Heroku アカウントにサインアップする

§アプリケーションを 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
...

通常のコマンドラインで行うのと同じやり方でログを追いかけることもできます。これはデバッグに便利です:

$ heroku logs -t --app floating-lightning-8044
2011-08-18T00:13:41+00:00 heroku[web.1]: Starting process with command `target/start`
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 Add-ons によって多くのリレーショナルデータベースと NoSQL データベースを提供しています。Heroku 上の Play アプリケーションには、自動的に Heroku Postgres が提供されています。この Postgres データベースを Play アプリケーションが使うように設定するには、まず PostgreSQL JDBC ドライバをアプリケーション依存性 (build.sbt) に追加します:

libraryDependencies += "postgresql" % "postgresql" % "9.1-901-1.jdbc4"

そして、プロジェクトのルートディレクトリに Procfile (“P” は大文字) というファイルを以下の内容で作成します (myapp は自身のプロジェクト名に置き換えてください):

web: target/universal/stage/bin/retailos -Dhttp.port=${PORT} -DapplyEvolutions.default=true -Ddb.default.driver=org.postgresql.Driver -Ddb.default.url=${DATABASE_URL}

この設定で、 web というプロセスでは Play を起動し applyEvolutions.defaultdb.default.driver それと db.default.url 設定をオーバーライドするように Heroku に指示します。 Procfile コマンドは最大で 255 文字である事に注意して下さい。代替手段として 本番向けの設定 ページに書かれている -Dconfig.resource= および -Dconfig.file= を使用します。

Heroku はデプロイされたアプリケーションが play アプリケーションであると断定するために conf ディレクトリの中にある application.conf ファイルを探すので、実際のところ Procfile の作成は必須でないことを覚えておいてください。

§更に進んだ学習リソース


このドキュメントの翻訳は Play チームによってメンテナンスされているものではありません。 間違いを見つけた場合、このページのソースコードを ここ で確認することができます。 ドキュメントガイドライン を読んで、お気軽にプルリクエストを送ってください。