Лучшие практики использования RVM для запуска Ruby on Rails 5 на веб-сервере

Я понимаю, что этот вопрос уже задавался миллион раз, но после нескольких дней поисков мне все еще не удалось найти подходящий ответ.

Я хотел бы запустить Ruby on Rails 5 на Centos 7. Стандартный Ruby, в настоящее время упакованный с Centos 7, - 2.0.0. Для Rails 5 мне нужна более высокая версия, а значит и RVM.

Вот некоторые из проблем, с которыми я столкнулся при использовании RVM:

  1. Если я использую рекомендуемый вариант для установки RVM

    \curl -sSL https://get.rvm.io | bash -s stable --ruby
    

    RVM и все камни Ruby будут установлены в мой $HOME каталог, но это не идеальный вариант, поскольку на сервере много пользователей, и, поскольку он является веб-сервером, конечно, нежелательно, чтобы гемы содержались в домашних каталогах пользователей, особенно если эти каталоги можно было удалить в в любое время (если контракт сотрудника заканчивается).

  2. Некоторые люди рекомендуют установить RVM, используя sudo чтобы обойти эту проблему (хотя столько людей не одобряют этот подход, поскольку он, кажется, сводит на нет цель RVM):

    \curl -sSL https://get.rvm.io | sudo bash -s stable --ruby
    

    и основываясь на собственном предложении RVM, я закомментирую строку, содержащую

    Defaults secure_path=...
    

    и мои драгоценные камни установлены в /usr/local/rvm/gems/ruby-2.3.1, что здорово, кроме того, что это создает другую проблему:

    • Если я бегу gem install rails Я получаю ошибку:

      You don't have write permissions for the /usr/local/rvm/gems/ruby-2.3.1 directory.
      

      Да, я мог бы решить эту проблему, добавив себя в rvm группа, но это не идеально, потому что это означает, что я всегда должен помнить, чтобы добавить каждого нового пользователя и удалить каждого старого пользователя из этой группы.

    • Если я бегу sudo gem install rails Я также получаю сообщение об ошибке:

      /usr/bin/env: ruby: No such file or directory
      
    • Если я бегу rvmsudo gem install rails, все работает, кроме меня тоже придется бежать bundle install с помощью rvmsudo, который выдает предупреждение, потому что это не рекомендуется.

    • Я мог бы запустить все, используя root пользователь, который работает... но тогда мне нужно помнить, чтобы сменить владельца всех файлов моего проекта, потому что apache не совсем имеет привилегии root и не может записывать в определенные каталоги проекта. Плюс, работает как root кажется неправильным на многих уровнях.


Другими словами, независимо от того, какой подход я выберу при использовании RVM, я сталкиваюсь с той или иной проблемой. Возможно, кто-то еще, кто успешно это применил, может поделиться своими идеями.

Единственный разумный подход, который мне удалось придумать, - это создать выделенного пользователя Rails, к которому все пользователи сервера переключатся перед выполнением какого-либо обслуживания, но я беспокоюсь, что такая служба, как apache, не "увидит" гемы устанавливается локально.

Комментарии, мысли, идеи? Может быть, мне чего-то не хватает в RVM?

0 ответов

Другие вопросы по тегам