元記事はこちら

少々長い記事なので、Play2アプリのビルド編とHerokuへのデプロイ編に分けます。

今回は、Herokuへのデプロイ編です。

Play2アプリのビルド編は、こちら

Play2アプリビルド編


Step 1) Herokuのアカウントを取得して、Heroku Toolbeltgitをインストールして、コマンドラインからHerokuへログインします

$ heroku login

もしこれがはじめてのHerokuへのログインだったら、git用のSSHキーの作成と、Herokuアカウントへの紐付けをする必要があります。

Step 2) Heroku上の各アプリケーションは、テスト用にPostgres DBを持っています。 Heroku上でアプリケーションを実行してこのDBを使うには、別途設定が必要です。 これにはいくつか方法がありますが、最も簡単な方法はスタートアップコマンドラインからDBの設定をオーバーライドする方法です。 これはStep3で紹介します。 その前に、Psotgres JDBCドライバーをプロジェクトの依存関係として指定する必要があります。 “project/Build.scala”ファイルに、以下のような”appDependencies”を設定します。

   val appDependencies = Seq(
      "postgresql" % "postgresql" % "9.1-901-1.jdbc4"
    )

Step 3) Herokuにどのプロセスを実行するのかを教えるために、プロジェクトルートディレクトリ配下にファイル名”Procfile”を作成し(※大文字と小文字が区別されます)、以下のように記述します

web: target/start -Dhttp.port=$PORT -DapplyEvolutions.default=true -Ddb.default.driver=org.postgresql.Driver -Ddb.default.url=$DATABASE_URL

Play2では、プロジェクトのビルドにScala Build Tool(SBT)を使います。プロジェクトがHerokuへデプロイされると、プロジェクトをコンパイルするため”sbt stage!コマンドが実行されます。 そして、プロセスがJavaのクラスパスの設定とPlayサーバーの起動をする”taget/start”スクリプトを生成します。 Herokuはアプリケーションに、Javaプロパティ”http.port”が適宜設定されるように、環境変数”PORT”を使用してリッスンすべきHTTPポートを通知します。 また、Heroku上のアプリケーションへDB(とその他のリソース)への接続文字列は、デフォルトでは環境変数介して渡されます。 環境変数のDATABASE_URLは、DBホスト、名前、ユーザ名、パスワードを含みます。 所謂”db.default.url”プロパティがその値で設定されます。 またドライバは、Postgres JDBCドライバクラスに設定されます。

Step 4) Herokuはアプリケーションのアップロード方法としてgitを使っています。 SCMツールにgitを使っていようと無かろうとHerokuへアプリケーションをアップロードするにはgitを使います。 プロジェクトのルートディレクトリでgit repoを作り、ファイルを追加してコミットします。

	git init
	git add Procfile app conf project public
	git commit -m init

※ 選択しての”git add”の代わりに、”.gitignore”ファイルを更新することもできます。

Step 5) Heroku CLIを使用して、Heroku上に新しいアプリケーションをプロビジョニングします。 あなたが作った各アプリケーションは1月辺り、750“dyno”時間無料です。 開発者として無料でHerokuを使用でき、スケールした分だけ支払うことになります。 コマンドライン上で、”cedar”スタックを使って新しいアプリケーションを作ります。

heroku create -s cedar

これでアプリケーションのHTTPとgitのエンドポイントを作ります。 アプリケーションで変更した名前を使うことも、自身のドメイン名を使うことも可能です。

Step 6) アプリケーションはクラウドへデプロイする準備が整いました。コマンドラインからHerokuのマスターブランチへ”git push”します。

git push heroku master

Herokuがファイル受け取ると、Play Frameworkのプレコンパイラが実行され、Herokuが”slug file”をアセンブルし、”slug”がdynoへデプロイされます。

Step 7) これで”heroku create”に続いて出力のドメインに移動する、もしくは単純に実行することで、ブラウザでアプリケーションを表示できます。

heroku open

Scala, Anorm, JSON, CoffeeScript, jQueryを使ったPlay2アプリケーションをHeroku上にデプロイできたはずです。 これよりも詳細にHerokuの使い方を知りたいときは、Heroku Dev Centerを確認してください。 もし質問があったら、私に知らせてください。

このエントリーは、CoffeeScript, jQuery, Play Framework, Scalaを使ってポストされました。パーマリンクをブックマークしてください。コメントかトラックバックをよろしく。トラックバックURLは、こちら