Fool Pool

ハマった記

Scala + heroku 公式チュートリアルどおりにやればうまくいった。

Play のプロジェクトは heroku でうまく動かなかったが、単純な Scala のプロジェクトは heroku 上で動かせるようだ。

heroku 公式チュートリアル https://devcenter.heroku.com/articles/getting-started-with-scala

このチュートリアルでは、Project ファイルを一つ一つ手動で作成していく。Play のように、play new で一発生成というわけにはいかないが、Scala Project の構成ファイルに何が書いてあるか勉強になる。

プロジェクト作成からデプロイまでの手順は以下の通り。

1) プロジェクトを編集する

プロジェクトの構成は以下:

  • src/main/scala/Web.scala -- Webアプリケーションサーバ
  • project/build.properties -- sbt のバージョンを指定 [0.12.0]
  • build.sbt -- sbt のビルド構成を指定
  • project/build.sbt -- プロジェクトをデプロイ時に走らせるスクリプトを指定
  • system.properties -- JDKのバージョンを指定(任意)
  • Procfile -- アプリのタイプを指定 [web]

2) ローカルでビルド

$ sbt compile stage

3) ローカルで実行

$ foreman start

4) Git リポジトリ作成

$ git init; git add .; git commit -m "init"

5) デプロイ

$ heroku create  # プロジェクト新規作成 (heroku)
$ git push heroku master

6) ブラウザでプロジェクトのURLにアクセス

f:id:nakamine11:20140325204736p:plain

よし。サイズも圧縮後のサイズが 116.9 MB なので容量制限はオーバーしていない(半分以上使っているが)。

Compressing... done, 116.9MB

あとは、アプリ状態管理コマンドをいくつか実行してみる。

7) スケールを 1 にする(多重化なし)

$ heroku ps:scale web=1

8) 稼働しているプロセス一覧を表示

$ heroku ps

9) ブラウザを開いてアプリにアクセスする

$ heroku open

10) スケールを 2 にする(2重化構成)

$ heroku ps:scale web=2

※ 無料アカウントだと「リソースが変更できない」となり失敗する.

Scaling dynos... failed
 !    Please verify your account in order to change resources For more information, see http://devcenter.heroku.com/categories/billing Verify now at http://heroku.com/verify

11) サーバ上のログを表示

$ heroku logs

12) one-off dynos でコマンドラインインタープリタを起動する (one-off dynos というのは、heroku上で単発のコマンドやメソッドを実行するためのコンポーネント) $ heroku run sbt console

13) one-off dynos で 自前のクラスメソッドを起動する

$ heroku run 'target/start Demo'

※ startの引数には、メソッド main を含む任意のクラスを指定できる。