46
deploy.rb Try Rails 5 on a production server in 30 mins Зыкин Илья github.com/the-teacher

Deploy.rb, Ilya Zykin, Rails club2016

Embed Size (px)

Citation preview

Page 1: Deploy.rb, Ilya Zykin, Rails club2016

deploy.rbTry Rails 5 on a production server in 30 mins

Зыкин Ильяgithub.com/the-teacher

Page 2: Deploy.rb, Ilya Zykin, Rails club2016

Доклад состоит из 2 частей

2

Page 3: Deploy.rb, Ilya Zykin, Rails club2016

Доклад состоит из 2 частей

1. Первая часть

3

Page 4: Deploy.rb, Ilya Zykin, Rails club2016

Доклад состоит из 2 частей

1. Первая часть2. Вторая часть

4

Page 5: Deploy.rb, Ilya Zykin, Rails club2016

5

Здорова, пацаны! Можно ехать!

Ну, давай, давай … удачи …

Page 6: Deploy.rb, Ilya Zykin, Rails club2016

6

Ребят,Rails 5

зарелизился

ещесыроват

мигрируем, не?

на-до про-то-тип

Page 7: Deploy.rb, Ilya Zykin, Rails club2016

7

Не понимаю Capistrano

Redis для ActionCable?

Надо пройти 2-х годичные

экспресс курсы Надо было на Joomla делать

Мам! Мам! На проде 500-ка

Page 8: Deploy.rb, Ilya Zykin, Rails club2016

Цель

Помочь людям поскорее попробовать Rails 5

Сократить время на запуск прототипа

и демо стенда

8

Page 9: Deploy.rb, Ilya Zykin, Rails club2016

Основная задача

Обеспечить запуск Rails 5 приложения на production сервере не более чем за 30 минут

9

Page 10: Deploy.rb, Ilya Zykin, Rails club2016

РешениеПрототип Rails 5 приложения

• ActionCable• Redis• Sidekiq• Sphinx• Whenever• Devise• Kaminari

10

Page 11: Deploy.rb, Ilya Zykin, Rails club2016

Решение

Быстро создать сервер и установить ПО

11

Page 12: Deploy.rb, Ilya Zykin, Rails club2016

Решение

Обеспечить простой деплой

12

Page 13: Deploy.rb, Ilya Zykin, Rails club2016

О проекте

Демонстрационный пример полного жизненного цикла Rails 5 приложения от rails new до deploy.

open-source проект для образовательных и демонстрационных целей.

13

deployrb.github.io

Page 14: Deploy.rb, Ilya Zykin, Rails club2016

Граничные условия

1.Простая инфраструктура. ALL IN ONE.1 сервер

14

Page 15: Deploy.rb, Ilya Zykin, Rails club2016

Граничные условия

1.Простая инфраструктура. ALL IN ONE.1 сервер

2. Production-like сервер на простом хостинге / VDS / VPS

15

Page 16: Deploy.rb, Ilya Zykin, Rails club2016

Граничные условия

1.Простая инфраструктура. ALL IN ONE.1 сервер

2. Production-like сервер на простом хостинге / VDS / VPS

3.Простота реализации

16

Page 17: Deploy.rb, Ilya Zykin, Rails club2016

Результат

1.Прототип Rails приложения

17

Page 18: Deploy.rb, Ilya Zykin, Rails club2016

Результат

1.Прототип Rails приложения

2.Скрипт установки сервера и руководство

18

Page 19: Deploy.rb, Ilya Zykin, Rails club2016

Результат

1.Прототип Rails приложения

2.Скрипт установки сервера и руководство

3. RUBY скрипт автоматизирующий процесс деплоя в стиле Capistrano

19

Page 20: Deploy.rb, Ilya Zykin, Rails club2016

20

deployrb.github.ioПопробуй Rails 5 в production

уже через 30 минут!

Page 21: Deploy.rb, Ilya Zykin, Rails club2016

21

Нюр, эта ля дЯплой?

Это Жаваскрипт! Вябсокяты! Деревня!

Page 22: Deploy.rb, Ilya Zykin, Rails club2016

ОПЫТ, СЫН ОШИБОК ТРУДНЫХ

22

Page 23: Deploy.rb, Ilya Zykin, Rails club2016

“Configuration of Rails 5 applications is the greatest problem facing the world today!”

— D. T.

23

Page 24: Deploy.rb, Ilya Zykin, Rails club2016

Типичные конфигурационные файлы

1.application.rb2.environments/3.initializers/4.database.yml5.secrets.yml6.spring.rb

24

Page 25: Deploy.rb, Ilya Zykin, Rails club2016

Типичные конфигурационные файлы

25

1.redis.config2.schedule.rb3.sidekiq.yml4.thinking_sphinx.yml….

Page 26: Deploy.rb, Ilya Zykin, Rails club2016

Новые конфигурационные файлы

1.cable.yml2.puma.rb3.initializers/

application_controller_renderer.rb4.assets/config/manifest.js

26

Page 27: Deploy.rb, Ilya Zykin, Rails club2016

application_controller_renderer.rb

27

Page 28: Deploy.rb, Ilya Zykin, Rails club2016

WebSockets + NignX

28

Page 29: Deploy.rb, Ilya Zykin, Rails club2016

broadcast / render

29

Page 30: Deploy.rb, Ilya Zykin, Rails club2016

broadcast / render

30

Page 31: Deploy.rb, Ilya Zykin, Rails club2016

31

Deploy Tool

Page 32: Deploy.rb, Ilya Zykin, Rails club2016

Deploy Tool

Capistrano

Недостаточно подходит для демонстрационных нужд

Целая экосистема модулей

Большой уровень сложности (DSL, Before/After hooks)

32

Page 33: Deploy.rb, Ilya Zykin, Rails club2016

Deploy Tool

Chef / Puppet

Явный overkill в рамках данной задачи. Не подходит для демонстрационных нужд.

33

Page 34: Deploy.rb, Ilya Zykin, Rails club2016

Deploy Tool

Ansible

Очень привлекательный вариант с системой конфигурирования и шаблонизацией из коробки

Не руби

34

Page 35: Deploy.rb, Ilya Zykin, Rails club2016

Deploy Tool

35

Page 36: Deploy.rb, Ilya Zykin, Rails club2016

Deploy Tool1. Централизованное управление конфигурацией деплоя

через YML файлы.

2. Шаблонизация ERB

3. Копирование файла на сервер SCP

4. Обращение к серверу по SSH

5. Выполнение простых операций на сервере:создание каталогов, клонирование проекта, линковка файлов и каталогов и перезапуск сервисов.

36

Page 37: Deploy.rb, Ilya Zykin, Rails club2016

SSH helper

37

Page 38: Deploy.rb, Ilya Zykin, Rails club2016

Thinking Sphinx Start / Stop

38

Page 39: Deploy.rb, Ilya Zykin, Rails club2016

39

Page 40: Deploy.rb, Ilya Zykin, Rails club2016

40

DEPLOY_ENV=production ruby deploy.rb

Page 41: Deploy.rb, Ilya Zykin, Rails club2016

Bonus

41

Page 42: Deploy.rb, Ilya Zykin, Rails club2016

kaminari. Issue #804 (fixed)

42

Проблема в SLIM и HAML

Page 43: Deploy.rb, Ilya Zykin, Rails club2016

Bundler. Issue #4966 (fixed)bundler 1.11.2 — bundler 1.13.2

43

Page 44: Deploy.rb, Ilya Zykin, Rails club2016

44

deployrb.github.ioПопробуй Rails 5 в production

уже через 30 минут!

Page 45: Deploy.rb, Ilya Zykin, Rails club2016

Q & A

45

Page 46: Deploy.rb, Ilya Zykin, Rails club2016

Спасибо!

46