2011-04-05 41 views
19

我很困惑在服务器上是否应该将RVM作为普通用户安装,还是在系统范围内进行安装,以及如果是后者,您应该如何执行诸如bundle install而不使用sudo系统范围安装的RVM是一个坏主意吗?

对于你所要做的事情,有没有一些明确的指导方针,就RVM而言,它是关于运行Rails的服务器的。乘客和Nginx?在这种类型的环境中,并不是所有的Ruby进程都在同一个用户下运行,所以我认为就RVM和捆绑者而言,这是不清楚的地方。

如何在服务器上一起避免使用RVM,并在那里安装Ruby和宝石,这种老式的方式呢?如果你能摆脱它,那么这样更好吗?

+0

专家意见很有价值 – 2014-11-10 16:08:37

回答

6

虽然我没有看到这一点,但可以将RVM作为普通用户安装。捆绑是每个应用程序,也不需要sudo的权限,因为它可以安装你的宝石成捆安装用户可以访问,例如捆绑目录:

bundle install --deployment 

,这将让他们在vendor/bundle默认。

我认为RVM是一个管理多个ruby版本的开发工具。在部署机器上,我倾向于使用系统Ruby或从源代码安装。

+0

“在部署机器上,我倾向于使用系统Ruby或从源代码安装。”同意。我也一样。 – 2011-04-05 23:31:10

+0

所以也许最好不要在服务器上使用RVM。 – dan 2011-04-05 23:41:10

3

RVM可以作为超级用户安装。虽然不需要,但这样做有很多好处(特别是在多用户系统上)。 Ruby(以及相关的Ruby Gems)附带的任何命令都应该正确设置其权限,以便正确运行。捆绑包不要求使用超级用户访问权限。它可以在特定的用户下运行,就像使用完整的sudo完成gem install对用户或系统范围的本地安装一样。

RVM只管理您特定安装的Ruby,以便您可以在多个级别的Ruby上进行开发 - 从RMI 1.8和1.9到JRuby 1.6等等。您可能有不同的项目,因此每个项目需要不同的需求。

就服务器本身而言(假设它是一个面向外部的服务器上有某种内容),这只取决于系统管理员。用例有所变化。如果你只需要服务器上的Ruby 1.9,那么真的不需要RVM。因为不需要管理多个版本的Ruby。所以我会在决定是否在服务器上使用全系统时考虑这一点。

希望有帮助!

+3

实际上,不建议以大多数用途的root身份进行安装。我从来没有为开发机器进行root安装。为单个用户系统提供独立的'〜/ .rvm'更好。 – 2011-04-05 23:25:13

+0

这是比需求更偏好的偏好。由于其他原因,让所有用户都可以使用它非常有用。例如,如果我想与另一个用户更密切地模仿我的生产环境,则我不必经历在另一个用户下重新安装RVM的痛苦。取决于你如何习惯工作。 – 2011-04-05 23:29:26

+1

“RVM旨在作为超级用户进行安装。”错误。其最初目标是用于开发的用户沙箱。它开发了系统使用的能力,但其主要优势仍然是用户的沙箱。随着1.5+的变化,根据韦恩在这里coupl'a周前的评论,文档正在转变。 – 2011-04-05 23:32:16

4

我强烈建议为生产环境进行系统范围的安装。运行用户特定的RVM似乎是一个巨大的麻烦。我在生产中使用Passenger/Nginx,每个项目都有自己的用户。我所要做的就是将它们添加到rvm组中,我很乐意去。

+0

在任何地方得到指导?我尝试使用全系统安装进行生产,并为每个项目分别设置了rubies和gemsets。然而,配置Nginx/Passenger使用正确的ruby/gemset是一件很痛苦的事情。我还发现,无论我登录的用户如何设置默认的ruby/gemset'rvm use ree @ gemset --default'命令都会影响整个系统。另一个问题:您是否也为每个项目使用.rvmrc文件? – John 2011-07-22 13:42:13

+1

我总是按照https://rvm.beginrescueend.com/integration/passenger/ – 2011-07-22 17:06:31

+0

创建'setup_load_paths.rb'感谢您的回复,jcm。该方法是否需要将“MY_RUBY_HOME”设置为每个项目/用户的环境变量? – John 2011-07-25 16:17:45

相关问题