ElixirのPhoenixをHeroku上で動かしてみました。久しぶりにheroku動かしたのですが、GitHub連携やDropbox連携も追加されたのですね。
環境
- Erlang version
- 17.5
- Elixir
- 1.0.4
- Phoenix
- 0.13.1
テンプレートプロジェクトの作成
Deployするプロジェクトは以下を参考に、簡単なサンプルプロジェクトにしました。
Herokuへのdeploy対応
Herokuへのdeployは、heroku-buildpack-elixirを使いました。
基本的にはここに書かれている手順を踏めば良いのですが、軽く手順を残しておきます。
elixir_buildpack.config を生成する
内容は以下です。
# Erlang version erlang_version=17.5 # Elixir version elixir_version=1.0.4 # Always rebuild from scratch on every deploy? always_rebuild=true # Export heroku config vars config_vars_to_export=(DATABASE_URL)
Procfile の作成
内容は以下。
web: mix phoenix.server
Heroku側の設定
ひとまず、手軽にdev環境を稼働させたかったので以下の対応をしました。
1. dev環境の設定
$ heroku config:set MIX_ENV=dev
2. config/dev.exs を修正してポートをシステム依存にする
以下のような感じ。
config :hello_phoenix, HelloPhoenix.Endpoint,
http: [port: {:system, "PORT"}],
debug_errors: true,
code_reloader: true,
cache_static_lookup: false,
watchers: [node: ["node_modules/brunch/bin/brunch", "watch"]]
3. DBの設定
HerokuのPostgreSQL Pluginを使い、usernameやpassword、databaseを作成します。
config :hello_phoenix, HelloPhoenix.Repo,
adapter: Ecto.Adapters.Postgres,
username: "phoenix_psql",
password: System.get_env("DB_PASS"), # "postgres",
database: "hello_phoenix_dev",
size: 10 # The amount of database connections in the pool
passwordなんかの大事な情報は、Herokuの環境設定を活用しましょう。
4. Deploy
$ heroku create --buildpack "https://github.com/HashNuke/heroku-buildpack-elixir.git" $ heroku config:set BUILDPACK_URL="https://github.com/HashNuke/heroku-buildpack-elixir.git" $ git push heroku master
接続
あとはHerokuのダイナモの数を調整して、アクセスできるようにします。
だいぶんお手軽にDeployできるようになりました。これから手を動かすぶんにはEC2やローカルで良さそうな気がしますが。
実施したリポジトリはこちら
追記: 2015/07/30
Phoenix 0.15のheroku deployを見てみると、 config/prod.secret.exs を消して config/prod.exs に統一することが必要みたいですね。
確かに、何もしないでdeployすると config/prod.secret.exs が無いというエラーが確認されます。