RUBY
DEPLOYMENT
HOW NOT TO SHOOT IN YOUR FOOT
WHEN DEPLOYING RUBY APPS
Maciej Rząsa
Slide 2
Slide 2 text
KONFIGURACJA
ENV
zmienne środowskowe
narzędzia, np Figaro
kofiguracja nie commitowana
> tylko 3 enviroments w Railsach (dev/test/prod), reszta za
pomocą ENV
+ przykładowy plik w projekcie
+ walidacja
Slide 3
Slide 3 text
ZEWNĘTRZNE ZASOBY
Dobrze
# r
u
b
y
r
e
d
i
s
_
u
r
l
=
E
N
V
[
'
R
E
D
I
S
_
U
R
L
'
]
#
c
o
n
f
i
g
R
E
D
I
S
_
U
R
L
=
'
r
e
d
i
s
:
/
/
r
e
d
i
s
.
h
o
s
t
:
3
4
5
6
/
0
'
Hmmmmm...
# r
u
b
y
r
e
d
i
s
_
u
r
l
=
"
r
e
d
i
s
:
/
/
r
e
d
i
s
.
h
o
s
t
:
3
4
5
6
/
#
{
E
N
V
[
'
R
E
D
I
S
_
N
U
M
'
]
}
"
#
c
o
n
f
i
g
R
E
D
I
S
_
N
U
M
=
'
0
'
Slide 4
Slide 4 text
DATABASE.YML
poza repozytorium, database.yml.example w repo
> database.yml w repozytorium:
p
r
o
d
u
c
t
i
o
n
:
a
d
a
p
t
e
r
: p
o
s
t
g
r
e
s
q
l
h
o
s
t
: <
%
= E
N
V
[
'
D
A
T
A
B
A
S
E
_
H
O
S
T
'
] %
>
e
n
c
o
d
i
n
g
: u
n
i
c
o
d
e
d
a
t
a
b
a
s
e
: <
%
= E
N
V
[
'
D
A
T
A
B
A
S
E
_
N
A
M
E
'
] %
>
u
s
e
r
n
a
m
e
: <
%
= E
N
V
[
'
D
A
T
A
B
A
S
E
_
U
S
E
R
'
] %
>
p
a
s
s
w
o
r
d
: <
%
= E
N
V
[
'
D
A
T
A
B
A
S
E
_
P
A
S
S
W
O
R
D
'
] %
>
albo:
p
r
o
d
u
c
t
i
o
n
:
u
r
l
: <
%
= E
N
V
[
'
D
A
T
A
B
A
S
E
_
U
R
L
'
] %
>
Slide 5
Slide 5 text
JESZCZE TYLKO RĘCZNIE USTAWIĘ TĄ ZMIENNĄ...
i może przejdą testy w jenkinsie
a może zadziała na stagingu
może nawet produkcja się nie wysypie
;-)
Slide 6
Slide 6 text
PROCESY
RESTART BEZ DEPLOYU
zwłaszcza background: sidekiq, rpush, itp
ważne przy ustawianiu konfiguracji
pomocne przy debugowaniu
narzędzia: serwisy systemowe (upstart, /
e
t
c
/
i
n
i
t
.
d
)
odradzam: gem capistrano-sidekiq
Slide 7
Slide 7 text
MONITOROWANIE
informacja o problemach z procesem
automatyczny restart
automatyczne włączanie po crashu
narzędzia: monit, god, upstart
Slide 8
Slide 8 text
ODPORNE NA RESTART SERWERA
cała aplikacja włacza się sama po restarcie
chyba, że chcecie być budzeni telefonem o 5 rano w niedzielę
;-)
Slide 9
Slide 9 text
LOGI
ROTOWANIE LOGÓW
oszczędność miejsca
ułatwiony dostęp
konieczne wymaganie!
narzędzia: logrotate
/
h
o
m
e
/
d
e
p
l
o
y
/
A
P
P
N
A
M
E
/
c
u
r
r
e
n
t
/
l
o
g
/
*
.
l
o
g {
d
a
i
l
y
m
i
s
s
i
n
g
o
k
r
o
t
a
t
e 7
c
o
m
p
r
e
s
s
d
e
l
a
y
c
o
m
p
r
e
s
s
n
o
t
i
f
e
m
p
t
y
c
o
p
y
t
r
u
n
c
a
t
e
}
Slide 10
Slide 10 text
LOKALIZACJA
+ /
v
a
r
/
l
o
g
/
A
P
P
N
A
M
E
/
+ osobna partycja na logi
+ wszystkie logi w jednym miejscu
Slide 11
Slide 11 text
PODSUMOWANIE - DOBRE
PRAKTYKI
rozdzielanie konfiguracji od kodu
automatyzacja deploymentu
monitoring
dbanie o zasoby dyskowe :)