gensym

プログラミングと読書、勉強に関するメモ

Phoenix を本番環境で起動する [Elixir]

環境: ubuntu 16.04, Elixir 1.4.4, Phoenix 1.2.1

Phoenix は開発時とほぼ同じような感じで動かせるが、多少の前準備と設定が必要になる。
あらかじめ Phoenixmysql をインストールして、Letsencrypt 辺りで証明書を取得しておく。
sym.hateblo.jp

# config/prod.exs
use Mix.Config

config :example, Example.Endpoint,
  force_ssl: [port: 443, hsts: true, rewrite_on: [:x_forwarded_proto]],
  url: [scheme: "https", host: "example.com", port: 443],
  cache_static_manifest: "priv/static/manifest.json",
  http: [port: 80],
  https: [port: 443,
    keyfile: "/etc/letsencrypt/archive/example.com/privkey1.pem",
    certfile: "/etc/letsencrypt/archive/example.com/fullchain1.pem",
    cacertfile: "/etc/letsencrypt/archive/example.com/fullchain1.pem"]

......

https: 内部で証明書や秘密鍵の場所を指定し、 force_ssl: で https 通信を強制している。
以下のコマンドで依存ライブラリのインストールとアセットファイルのコンパイルをする。
Rails における Asset Pipeline と Bundle のようなものか。

# ライブラリのインストール、コンパイル
$ mix deps.get --only prod
$ MIX_ENV=prod mix compile

# アセットファイルのコンパイル
$ brunch build --production
$ MIX_ENV=prod mix phoenix.digest

# データベースのマイグレーション
$ MIX_ENV=prod mix ecto.migrate

# サーバの起動
$ MIX_ENV=prod mix phoenix.server

サーバはデーモン起動が面倒な感じなので、tmux で起動している。

参考: Introduction · Phoenix

プログラミングElixir

プログラミングElixir