- Install erlang
- Install elixir
- Install mix
- Port 22
- Install git
- Install erlang
- Install mix
- SSH to server
- {:edeliver, "~> 1.4.3"}
- {:distillery, "~> 1.4"}
Add configuration to web project
config :myproject, MyProjectWeb.Endpoint,
http: [port: 4000],
server: true,
code_reloader: false
Upload secret files
scp ~/my_project/config/prod.secret.exs server1:/home/myuser/app_config
Config release
mix release.init
Config deliver
.deliver/config
APP="my_project"
BUILD_HOST="fredys.site"
BUILD_USER="saiberz"
BUILD_AT="/home/saiberz/app_build"
PRODUCTION_HOSTS="fredys.site"
PRODUCTION_USER="saiberz"
DELIVER_TO="/home/saiberz/app_release"
pre_erlang_get_and_update_deps() {
local _prod_secret_path="/home/saiberz/app_config/prod.secret.exs"
if [ "$TARGET_MIX_ENV" = "prod" ]; then
__sync_remote "
ln -sfn '$_prod_secret_path' '$BUILD_AT/config/prod.secret.exs'
"
fi
}
Update gitignore
echo ".deliver/releases/" >> .gitignore
Commit project
git commit -m "Add files for deployment"
cd ~/my_project
mix edeliver build release
mix edeliver deploy release to production
mix edeliver start production