-
Notifications
You must be signed in to change notification settings - Fork 4
サーバーへのデプロイ
Phoenixのデプロイは、exrmを使って行います。
以下の手順で、Phoenixアプリにexrm
を組み込んでください。
mix.exsのdepsに、exrm
を追加
defp deps do
[
〜
{:exrm, "~> 1.0.6"} # Release Generator
]
end
次に、mix deps.get
で関連ファイルを取得してください。
$ mix deps.get
$ mix deps.compile
$ mix help | grep release
mix release # Build a release for the current mix application
mix release.clean # Clean up any release-related files
mix release.plugins # View information about active release plugins
$
mix release
がexrm
によって追加されるコマンドです。
Phoenixアプリのデプロイは次の手順で行います。
-
brunchでアセットをコンパイル
-
mix phoenix.digest
でアセットのマニフェスト(manifest.json
)を作成 -
exrmでリリースファイルを作成
-
リリースファイルをサーバーに配置
-
リリースファイルを展開して、デーモンとして起動
Phoenixではアセットファイルをbrunchでコンパイルします。 本番(prod)用のアセットのコンパイルは以下の手順で行ってください。
$ npm install -g brunch # brunchのインストール
$ brunch build --production # prodのアセットをコンパイル
アセットファイルのキャッシングの為に、priv/static
以下にマニフェスト(アセットファイルのMap)と、digest化したファイルを配置します。
$ MIX_ENV=prod mix phoenix.digest
mix release
でリリースファイルを作成してください。
$ MIX_ENV=prod mix release
mix release
を実行すると、rel
ディレクトリが作成されます。
relディレクトリには、
rel/<アプリ名>/releases/<バージョン>/<アプリ名>.tar.gz
が含まれているので、この、<アプリ名>.tar.gz
をリリース対象のサーバーに配置してください。
scp
等で、上記のgzファイルをサーバーに配置してください。
サーバーに配置したgzファイルを展開すると、bin
ディレクトリが作成されます。
$ tar <アプリ名>.tar.gz
$ ls
bin erts-8.0 lib releases running-config tmp <アプリ名>.tar.gz
$
bin/<アプリ名>
を実行する事でアプリを起動できます。
$ ./bin/<アプリ名>
Usage: <アプリ名> {start|start_boot <file>|foreground|stop|restart|reboot|ping|rpc <m> <f> [<a>]|console|console_clean|console_boot <file>|attach|remote_console|upgrade|escript|command <m> <f> <args>}
$
-
アプリの起動:
./bin/<アプリ名> start
-
アプリの停止:
./bin/<アプリ名> stop
-
アプリの起動(コンソールで):
./bin/<アプリ名> console
-
起動しているアプリに対してアタッチ:
./bin/<アプリ名> remote_console
-
ping:
./bin/<アプリ名> ping