ADD DISTILLERY DEPS TO MIX.EXS
{:distillery, "~> 1.0"}
Slide 12
Slide 12 text
FETCH DEPS
$ mix deps.get
Slide 13
Slide 13 text
RELEASE IT!
$ mix release
==> You are missing a release config file.
Run the release.init task first
Slide 14
Slide 14 text
DO AS DISTILLERY TOLD YOU
$ mix release.init
Slide 15
Slide 15 text
GENERATED REL/CONFIG.EXS
Slide 16
Slide 16 text
No content
Slide 17
Slide 17 text
REL/CONFIG.EXS
#/rel/config file content
...
include_ertc: false #needs to have erlang installed.
...
release :app_name do
set version: current_version(:app_name)
end
Slide 18
Slide 18 text
PRODUCE A RELEASE
MIX_ENV=prod mix compile
mix release --env=prod
--verbose option for more info
Slide 19
Slide 19 text
YOU CAN FIND YOUR RELEASES AT
_BUILD/PROD/REL/APP_NAME/RELEASES/0.0.1/
Slide 20
Slide 20 text
AND TARBALL IS
PRODUCED!
.TAR.GZ
Slide 21
Slide 21 text
AND YOU HAVE BUILT YOUR
RELEASE!
Slide 22
Slide 22 text
No content
Slide 23
Slide 23 text
...BUT SOMETIMES
THINGS GO WRONG
Slide 24
Slide 24 text
No content
Slide 25
Slide 25 text
No content
Slide 26
Slide 26 text
SOLUTION 1
SHORTEN LONG MODULE NAMES
$ find . -type f -print| awk -F/ ' length($NF) > 99 '
Slide 27
Slide 27 text
SOLUTION 2
PRODUCE TARBAL MANUALLY
MIX_ENV=prod mix compile
mix release --env=prod --no-tar
cd /my_app/_build/prod
tar -cvzf my_app.tar.gz
Slide 28
Slide 28 text
GOT IT SORTED!
Slide 29
Slide 29 text
DEPLOYING
Slide 30
Slide 30 text
POSSIBILITY 1
MANUALLY COPY .TAR.GZ TO THE PROD SERVER
# copy release to prod server
$ scp -i _build/prod/rel/my_app/releases/0.0.1\
/my_app.tar.gz user_name@server_name:/home/my_app/releases/0.0.
my_app.tar.gz
Slide 31
Slide 31 text
UNTAR IT
# ssh to the server ssh user_name@server_name
# untar your release on prod server
tar -xzf ~/my_app.tar.gz
Slide 32
Slide 32 text
CHECK IT'S WORKING
# start it on prod server
my_app/bin/my_app console
# you should see the logs
# start it as a daemon on prod server
my_app/bin/my_app start
my_app/bin/my_app ping
# > pong