[#] [Из песочницы] Настройка сервера и деплоя: rvm, rails, puma, nginx, mina
habrabot(difrex,1) — All
2015-08-28 18:00:02




## Предыстория

На создание этой статьи меня толкнула недавняя [публикация о деплое][1]. В приведённой статье описан способ разворачивания проекта на основе rbenv, я же опишу ситуацию с rvm и настройкой upstart.

## Задачи и требования

Итак, дано: простейшее RubyOnRails-приложение. В случае разворачивания своего проекта я ставил перед собой следующие задачи:

* ОС Ubuntu LTS 14.04;
* Веб-сервер Nginx;
* Сервер приложения Puma;
* Использование RVM для установки ruby требуемой версии;
* Автоматический запуск приложения при запуске VPS-сервера, возможность управлять приложением как службой;
* Автоматизация процесса деплоя с помощью mina;

**Почему Ubuntu?** Просто я к ней привык (точнее к её производной — Linux Mint). **Почему puma, а не unicorn или passenger?** О пуме я слышал неплохие отзывы, а у unicron страшненький сайт. Passenger, на мой взгляд, нарушает принцип единственной обязанности — я хочу иметь веб-сервер и приложение-сервер. **Почему RVM?** Я к нему привык — у меня он установлен на локальной машине, хочу его видеть и на production. **Почему mina?** Она действительно проще чем capistrano и при этом быстрее. Скорость достигается за счёт того, что для каждой задачи capistrano создаёт отдельное ssh-соединение. Mina же формирует shell-скрипт и выполняет его в рамках одного соединения. В данном случае задача легко разбивается на 3 этапа:

1. Убедиться, что приложение корректно запускается (пока без автоматизации);
2. Настроить сервер так, чтобы наше rails-приложение работало как полноценная служба;
3. На основе этого настроить автоматизированное разворачивание с помощью mina.

[Читать дальше →][2]

[1]: http://habrahabr.ru/post/265459/
[2]: http://habrahabr.ru/post/265599/#habracut