Почему RVM System Wide? - PullRequest
       18

Почему RVM System Wide?

9 голосов
/ 17 июня 2011

Я настроил производственную среду для рельсов с:
* Приложения rails под пользователем с именем deploy.
* Пользователь развертывания - это обычный пользователь, НЕ имеющий разрешений sudo.
* Пользователь развертывания использует свой собственный rvm в песочнице (не для всей системы), поэтому все, что ruby ​​находится только под пользователем развертывания.
* Пользователь, который запускает apache, не имеет доступа к среде ruby, и ему не требуется доступ, поскольку apache не требуется ruby.
* Пользователь развертывания запускает кластер единорога.

Эта несистемная конфигурация rvm прекрасно работает для меня. Я вижу следующие преимущества:
* Мне не нужно использовать sudo каждый раз, когда я устанавливаю гем.
* Ruby находится в «песочнице» и доступен только для пользователя развертывания, что повышает безопасность системы путем минимизации. Apache не заботится о ruby, поэтому он не получает к нему доступ!

Единственный недостаток, который я вижу, это то, что мы не можем использовать пассажирский-apache-модуль или пассажирский-nginx-модули, но тогда на помощь приходит отдельный пассажир!

Мой вопрос: Почему все в Интернете склонны использовать общесистемную установку RVM? Я не смог найти ни одного поста об использовании RVM в режиме non-sudo в производстве. Я скучаю по самой важной части здесь? Я хочу знать, что не так хорошо в установке non-sudo rvm на производстве.

Спасибо!

Ответы [ 3 ]

15 голосов
/ 17 июня 2011

Я всегда делаю своего рода гибрид для развертываний:

  • Я устанавливаю всю систему RVM (но доступна только для пользователей в группе rvm )
  • Я создаю отдельного пользователя, который входит в различные группы: rvm, db (mysql, postgres или что вы используете), nginx и т. Д ...

так вы можете:

  • выполнять все задачи администрирования, связанные с Интернетом, без использования sudo или root
  • используйте capistrano, не беспокоясь о привилегиях или командах ruby ​​для запуска
  • сохраняйте контроль над привилегиями и используйте ruby ​​из любого места
  • Используйте упаковщик без нареканий

если вы устанавливаете RVM под конкретным пользователем, вы не можете использовать ruby ​​вне этого пользователя.

4 голосов
/ 17 июня 2011

Я также использую rvm как локальный пользователь, но мне удалось интегрировать пассажирский (версия 2.x). Эта страница помогает? https://rvm.beginrescueend.com/integration/passenger/

Я могу покопаться в моих конфигурационных файлах (в выходные дни) и помочь вам, если вы застряли. Дайте мне знать.

ответ на комментарий

Я сделал не-system-wide-rvm-install, потому что:

  1. Это соответствует моей среде разработки.
  2. В общем, я предпочитаю способ «простой сборки из исходного кода без влияния на общесистемную установку».
  3. Было легко переключаться с дистрибутива при условии, что Ruby на локальный RVM предоставлял Ruby в рабочем состоянии, и иметь возможность переключаться обратно, если он не работал.

Я не видел никаких проблем с ним, но я думаю, что RVM для всей системы и RVM для всей системы могут работать без проблем на производстве.

Я использую Apache, а не Nginx. Также я не использую Unicorn. Оба эти различия могут создать для вас проблему, которая может не затронуть меня.

3 голосов
/ 17 июня 2011

Не забывайте, что RVM - это не только рельсы или некоторые стоечные приложения, которые для развертывания в основном прозрачны благодаря различным инструментам (веб-серверам и т. Д.), Но и для среды ruby.

Выясните, например, многопоточный сервер, написанный на ruby, следящий за последовательным портом, который должен запускаться как демон, если вы хотите запустить его с помощью скрипта init из init.d или просто из boot.local, поверьте мне, это головная боль для игрыс su - rvm_user -c"whatever и обычно невозможно.В эти моменты вы пересматриваете установку RVM, по крайней мере, для производственной среды.

...