Slide 1

Slide 1 text

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 :)