Deploy Ruby on Rails – Nginx/Puma/Postgres/Capistrano

Приклад деплоя app на Ruby On Rails

В даній замітці розглядається приклад деплою проетку під назвою tools на   VPS-сервер Ubuntu 14.04, код проекту знаходиться на git-сервері bitbucket.org у приватному репозиторію. Використовуємо Ruby 2.3.1 та Ruby On Rails 4.2

 

Підготовка VPS-серверу

Створюємо користувача deployer, в цілях деплоя нашого app

Додаємо його в sudo (/etc/sudoers)

Оновлюємо встановлений софт та інсталюємо curl та nodejs

Якщо виникає warning на кшталт

виконуємо наступні дії:

якщо у warning'у фігурує 'uk_UA.UTF-8', то відповідно
 

(у мене ця помилка виникала в Ubuntu 14.04. Без її усунення будемо мати проблеми при інсталяції Postgres)

Інсталюємо RVM

Інсталюємо Postgres

Створюємо базу даних та користувача

Інсталюємо Git

Інсталюємо Bundler

Інсталюємо Nginx та редагуємо конфігураційни файл default-хосту

Генерація ssh ключів

Оскільки користувачу deployer потрібний доступ до git-серверу а  репозиторій проекту у нас приватний,  ми генеруємо ssh-key

та додаємо ключ

Підготовка проекту на локальній машині для деплоя

Для деплоя проекту, нам потрібний ssh-доступ з докальної машини на VPS-сервер, для цього добавимо ssh-key на сервер deploy'я

якщо у config/secrets.yml  ми маємо

тоді генеруємо токен

та вставляємо його замість <%= ENV[“SECRET_KEY_BASE”] %> 

Якщо проект в стадії розробки, варто буде в config/environments/production.rb задати

щоб бачити реальні помилки замість сторінки із "we're sorry"

Capistrano

В нашому локальному проекті добавимо наступні gem'и (в Gemfile)


Виконуємо інсталяцію нових gem'ів та capistrano

В результаті у нас з'являться наступні два нові файли
config/deploy.rb
config/deploy/production.rb

 

Конфігурація config/deploy.rb

Конфігурація config/deploy/production.rb, полягає лише у втсавці ip-адресу vps-серверу

Якщо ви не захотіли по якійсь причині використовувати ключі для доступу до VPS-серверу, ми можете прописати ssh-параметри доступу в цьому файлі

Конфігурація Capfile

Виконуємо deploy!