Deploy Ruby on Rails – Nginx/Passenger/Postgres/Capistrano/LXC

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

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

 

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

Створюємо LXC-контейнер використавши шаблон ubuntu-14.04-standart-amd64-ROR-Nginx-Passenger-Postgres-Capistrano (опис деплоя з нуля)

Заходимо через консоль, та задаємо пароль для користувача deployer

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

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

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

та додаємо ключ на git-сервер

налаштування поштового серверу

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

Для деплоя проекту, нам потрібний 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!

Можливі проблеми:

  • NoMethodError: undefined method `[]' for nil:NilClass – переімуневати усі .css файли у .scss
  •