Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Elixir Deployment
Search
tetiana12345678
January 29, 2017
Programming
420
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Elixir Deployment
Talk given at Elixir London meetup 2017.
tetiana12345678
January 29, 2017
More Decks by tetiana12345678
See All by tetiana12345678
Types in Elixir
tetiana12345678
0
73
The Age of Elixir
tetiana12345678
1
480
Building "learn to touch type" glove with Elixir and Arduino
tetiana12345678
1
1.6k
Using effective learning technique to learn Elixir.
tetiana12345678
1
160
elixir flashcards
tetiana12345678
1
330
Other Decks in Programming
See All in Programming
なぜ関数型プログラミングで「型」と「証明」が語られるのか #fp_matsuri
kajitack
3
980
Foundation Models frameworkで画像分析
ryodeveloper
1
120
ルールを書いて終わらせないハーネスエンジニアリング
yug1224
3
1.6k
ITヒヤリハットを整理してみた ~ライフサイクルと原因から考える再発防止策~
koukimiura
1
110
技術記事、 専門家としてのプログラマ、 言語化
mizchi
14
7.5k
『コードを書く以外の』エンジニアリング〜課金基盤移行プロジェクト推進のためのTips4選
yuriko1211
0
510
PHP に部分適用が来るぞ!……ところで何それ?おいしいの? #phpcon / phpcon-2026
shogogg
0
280
【やさしく解説 設計編・中級 #1】一つの車に、運転手は一人 ~ある倉庫システムの事例から~
panda728
PRO
0
180
5分で問診!Composer セキュリティ健康診断
codmoninc
0
430
Claude Team Plan導入・ガイド
tk3fftk
0
210
才能?センス?知らん、 続けたもん勝ちだ。-- 結婚・出産・癌を越えてなお、私がプロダクトを創り続ける理由
16bitidol
2
880
Go言語とトイモデルで学ぶTransformerの気持ち / fukuokago23-transformer
monochromegane
0
130
Featured
See All Featured
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
540
GitHub's CSS Performance
jonrohan
1033
470k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.2k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
201
75k
Building an army of robots
kneath
306
46k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
65
56k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.9k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Evolving SEO for Evolving Search Engines
ryanjones
0
240
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.1k
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Transcript
DEPLOYING ELIXIR BY TETIANA DUSHENKIVSKA
None
HEROKU VS USING RELEASES
DEPLOYING USING RELEASES
PICK RELEASE MANAGER EXRM DISTILLERY REBAR3
None
WHERE SHOULD WE BUILD A RELEASE?
None
None
CREATING A RELEASE OF OTP APP WITH DISTILLERY
ADD DISTILLERY DEPS TO MIX.EXS {:distillery, "~> 1.0"}
FETCH DEPS $ mix deps.get
RELEASE IT! $ mix release ==> You are missing a
release config file. Run the release.init task first
DO AS DISTILLERY TOLD YOU $ mix release.init
GENERATED REL/CONFIG.EXS
None
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
PRODUCE A RELEASE MIX_ENV=prod mix compile mix release --env=prod --verbose
option for more info
YOU CAN FIND YOUR RELEASES AT _BUILD/PROD/REL/APP_NAME/RELEASES/0.0.1/
AND TARBALL IS PRODUCED! .TAR.GZ
AND YOU HAVE BUILT YOUR RELEASE!
None
...BUT SOMETIMES THINGS GO WRONG
None
None
SOLUTION 1 SHORTEN LONG MODULE NAMES $ find . -type
f -print| awk -F/ ' length($NF) > 99 '
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
GOT IT SORTED!
DEPLOYING
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
UNTAR IT # ssh to the server ssh user_name@server_name #
untar your release on prod server tar -xzf ~/my_app.tar.gz
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
A BIT OF AUTOMATION
None
GET TO KNOW YOUR SERVER
.TAR.GZ VS .DEB?
.DEB CONTAIN DEBIAN-BINARY CONTROL.TAR.GZ DATA.TAR.GZ
DEBIAN-BINARY 2.0/n
CONTROL.TAR.GZ ARCHIVED CONTROL FILE Package: my.app Version: 1.0.0 Architecture: amd64
Maintainer: Inflowmatix Priority: optional Description: Packaged on debian server
DATA.TAR.GZ THIS IS WHERE OUR APP BINARIES GO (FROM _BUILD
DIR)
LET'S SEE THE EXAMPLE
None
CIRCLECI(2.0) BUILD RELEASE(NO TAR) cd my_app if [ "${CIRCLE_BRANCH}" ==
"master" ]; then MIX_ENV=prod mix compile mix release --env=prod --no-tar --verbose ...
PREPARE DATA.TAR.GZ ... cd /my_app chmod 755 _build/prod/rel/my_app/bin/my_app ... mkdir
-p /my_app/package/ cd /my_app/_build/prod/ tar --xform="s%^%/home/my_app/%"\ -cvzf /my_app/package/data.tar.gz rel/
PREPARE DEBIAN-BINARY ... echo "2.0" >> package/debian-binary
PREPARE CONTROL.TAR.GZ ... mkdir -p package/control cd package/control printf "Package:
..." >> control; tar -zcf /my_app/package/control.tar.gz .
CREATE .DEB PACKAGE ... cd /my_app/ version=$(git describe | sed
's/v//'); mkdir releases ar -rc releases/my_app_$version.deb\ package/debian-binary package/control.tar.gz\ package/data.tar.gz rm -rf package/ fi
STORE .DEB IN ARTIFACTS(CIRCLECI) - type: artifacts-store path: /my_app/releases destination:
releases
DOWNLOAD RELEASE SSH TO THE SERVER $dpkg my_app_0.0.1.deb $/home/my_app/bin/my_app start
SUMMARY LOT'S OF OPTIONS 3 PIECES NEEDED TO PRODUCE .DEB
PACKAGE COULD BE FRUSTRATING, BUT DON'T GIVE UP! CHECK WHERE YOU ARE BUILDING A RELEASE