Skinny Frameworkで作ったアプリをHerokuで動かしてみよう
Skinny Frameworkで作ったWebアプリをHerokuにアップしてみました。
※この記事は、Skinny Framework 1.0.13
時点のものです。
概要
Skinny Framework(以下、skinnyと表記)は、Herokuをサポートしています。
- Packaging - Skinny Framework
- Deployment on Heroku を参照
ただし、現時点ではWindowsの場合に注意すべき点があるので、それについては後述します。
開発環境
準備
以前、Play2でHerokuを使った(下記リンク参照)ので、Herokuツール(toolbelt)のインストールについてはここでは割愛します。
Herokuのドキュメンテーションページもあわせてご覧ください。
また、skinnyのアプリを作るところは、下記エントリーを参照してください。
アプリを作ったら、ローカルのGitリポジトリーを作成します。既にリポジトリーがあるアプリを使う場合は、ここはスキップします。
> git init > git add . -v > git commit -m "init"
Herokuツールのインストールと、skinnyのアプリを作ってローカルで動かすところまで出来たら、準備完了です。
アプリ名の修正
Heroku上ではstandaloneで動作します。standaloneのassembly-jarファイルは、pakcage/Build.scala
のappName
とappVersion
に設定されている文字列が使用されます。例えば、appName="aaaa-bbbb"
、appVersion="0.1.0-SNAPSHOT"
の場合は、aaaa-bbbb-standalone-assembly-0.1.0-SNAPSHOT.jar
になります。
heroku/run
にHeroku上で起動するためのコマンドがあるので、このコマンドで指定されているjarファイル名がこのファイル名に対応するように修正する必要があります。
Windowsの場合の注意
Windowsの場合は、SHスクリプトのパーミッションが644になるため、ビルドと起動でエラーになってしまいます。
./skinny ./heroku/common.sh ./heroku/run ./heroku/skinny ./heroku/stage
git-update-index
を使って、755で登録しなおします。
> git update-index --chmod=+x skinny heroku/* > git commit
Herokuに新規アプリを作成
Herokuサーバー上に新しいアプリを作ります。
コマンドプロンプトを開き、アプリのルートディレクトリに移動してから、herokuのコマンドを実行します。
今回は、アプリ名は自動にします。
> heroku apps:create
アプリ名はaaaa-bbbb-9999
(仮)になりました。
ここでGitリポジトリーのURLも表示されますので、リモートに追加しておきます。
> git remote add heroku git@heroku.com:aaaa-bbbb-9999.git
データベースの準備と設定
Postgresアドオンを設定します。これも以前のエントリーに書いていますので、そちらを参照してください。
skinnyのデータベース設定はsrc/main/resources/application.conf
にあります。これは修正する必要はありませんが、ここで使用する環境変数を設定する必要があります。
> heroku config === aaaa-bbbb-9999 Config Vars DATABASE_URL: postgres:// ... (他の変数は省略) > heroku config:set DATABASE_HOST=... > heroku config:set DATABASE_USER=... > heroku config:set DATABASE_PASSWORD=... > heroku config === aaaa-bbbb-9999 Config Vars DATABASE_URL: postgres:// ... DATABASE_HOST: ... DATABASE_USER: ... DATABASE_PASSWORD: ... (他の変数は省略) >
デプロイ
あとはデプロイと、DBマイグレーションをすれば動作します。
> git remote add heroku git@heroku.com:aaaa-bbbb-9999.git > git push heroku master > heroku run heroku/skinny db:migrate production
初回は時間かかります。混み具合にもよると思いますが、2回目以降は5~6分くらいで完了しました。
なお、DBマイグレーションの時に、メモリー制限(Memory quota)の512MBを超えたためログにエラーが出ましたが、処理は問題なく実行できました。
あとはアプリを起動して、動作を確認します。
エラーが出たら、デプロイか実行時のログを見て、エラーの原因を探しましょう。
エラーを流しておくには、下記コマンドを実行します。
- Herokuのログを
tail -20f
する
> heroku logs --tail -n 20
これで、skinnyで作ったアプリをみんなに公開できるようになりました。