Documentation

You are viewing the documentation for the 2.2.0 release in the 2.2.x series of releases. 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
...

問題なしのようです。さらに以下のコマンドを実行すると、ブラウザが起動してデプロイした 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.defaultdb.default.driver それと db.default.url 設定をオーバーライドするように Heroku に指示します。 Procfile コマンドは最大で 255 文字である事に注意して下さい。代替手段として 本番向けの設定 ページに書かれている -Dconfig.resource= および -Dconfig.file= を使用します。

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