LoginSignup
57
55

More than 5 years have passed since last update.

Phoenix を heroku で動かす

Last updated at Posted at 2014-10-13

はじめに

Phoenix v0.17.0 で検証しています。公式のやり方に沿うのが最も新しく確実な情報です。

Phoenix でサンプルアプリを作る

Phoenix のインストールはこちらを。
Phoenix の Up And Running に沿って、以下を実行する(記事を書いている時点で v0.17.0 が Phoenix の最新版)。

$ mix archive.install https://github.com/phoenixframework/phoenix/releases/download/v0.17.0/phoenix_new-0.17.0.ez
$ mix phoenix.new /path/to/scaffold/sample_app
$ cd sample_app
$ mix phoenix.server

一連のコマンドが上手くいけば localhost:4000 にアプリが立ち上がる。

heroku-buildpack-elixir で heroku 用の設定を作る

heroku-buildpack-elixir はいくつかあるので注意。https://github.com/HashNuke/heroku-buildpack-elixir これを使う。
buildpack の指定を以下のようにし、heroku アプリを作成する。

$ heroku create --buildpack "https://github.com/HashNuke/heroku-buildpack-elixir.git"

https://github.com/HashNuke/heroku-buildpack-elixir の README に沿って、elixir_buildpack.configProcfile を作成する。
私はそれぞれ以下の内容で作成した。

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=false

# Export heroku config vars
config_vars_to_export=(DATABASE_URL)

# A command to run right after compiling the app
post_compile="pwd"
Procfile
web: mix phoenix.server

heroku-buildpack-phoenix-static で assets 用 buildpack を設定する

これを設定することでデプロイ前に static ファイルをビルドしてくれる。

$ heroku buildpacks:add https://github.com/gjaldon/heroku-buildpack-phoenix-static.git

config/prod.exs の変更

SECRET_KEY_BASEDATABASE_URL 環境変数を設定するために変更します。

--- a/config/prod.exs
+++ b/config/prod.exs
@@ -56,6 +56,14 @@ config :logger, level: :info
 #     config :sample_app, SampleApp.Endpoint, server: true
 #

-# Finally import the config/prod.secret.exs
-# which should be versioned separately.
-import_config "prod.secret.exs"
+# In this file, we keep production configuration that
+# you likely want to automate and keep it away from
+# your version control system.
+config :sample_app, SampleApp.Endpoint,
+  secret_key_base: System.get_env("SECRET_KEY_BASE")
+
+# Configure your database
+config :sample_app, SampleApp.Repo,
+  adapter: Ecto.Adapters.Postgres,
+  url: System.get_env("DATABASE_URL"),
+  pool_size: 20

環境変数を heroku に設定する

以下の通り。mix phoenix.gen.secret で生成される HOGEHOGEHOGEHOGEHOGEHOGEHOGEHOGEHOGEHOGESECRET_KEY_BASE 環境変数に設定する。

$ mix phoenix.gen.secret
HOGEHOGEHOGEHOGEHOGEHOGEHOGEHOGEHOGEHOGE
$ heroku config:set SECRET_KEY_BASE="HOGEHOGEHOGEHOGEHOGEHOGEHOGEHOGEHOGEHOGE"

heroku にあげる

ここまで準備できたら後は git push heroku master すれば heroku 上で起動しているのが確認できる。

SEE ALSO

57
55
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
57
55