Окружение на боевом сервере для веб-приложений на Ruby. Как правильно настроить сервер?
После написания приложения встаёт вопрос как это всё разворачивать на боевых серверах. На локальной машине есть какой-то сервер, который вертится от твоего пользователя и как-то проблем не вызывает. Но сервер это другое.
Возьмём к примеру Rails приложение (Ruby 1.9.3-head, Rails 3.2).
Есть root shell на сервер, например, с Debian/Ubuntu, на сервере уже крутится nginx. Как лучше построить окружение, в которой это приложение будет работать?
Мысли мои были в сторону установки rvm, unicorn и запуска этого добра пользователем www-data, но я не смог реализовать такую схему. Может у кого есть похожие решения?
Да, я читал эту статью. В статье описывается развёртывание отдельным пользователем, в профиль (домашнюю директорию) которого установлен rvm.
Это как бы расходится с моим видением мира. По крайней мере я думаю, что более правильно устанавливать rvm на уровне всей системы (установка с sudo) и дальше создавать под каждый проект на этом сервере rvmrc. Так же мне не кажется правильным создавать пользователя, чтобы запускать от его имени приложение. В системе уже есть пользователь www-data, который специально создан для работы под ним разный веб-приложений и простых статических файлов.
Если я ничего не путаю. Впрочем для выяснения лучшего решения я и создал этот пост.
На Debian я использовал www.dotdeb.org/ — последние версии nginx и passenger. RVM system-wide по инструкциям с сайта (пакетов подходящих не нашлось :(). Как следствие — ruby всё-таки приходится собирать на сервере. Деплоил по схеме приложение->пользователь/группа, добавляя пользователя www-data в группу приложения, чтобы nginx мог читать файлы с правами вроде 440.