RVM/rbenv RVM 的 Mixed mode 在 Ubuntu/Debian 上怎么设置?

lgn21st · 2012年03月06日 · 最后由 ery 回复于 2012年03月06日 · 3261 次阅读

本地开发一直用 RVM,非常方便,而且值得信赖。

在生产环境下我打算全面启用 RVM,系统环境是 Ubuntu/Debian。因为希望用一个普通 user 来部署,但仍然需要用 sudo 来执行一些系统维护以及监控脚本,所以 RVM 的 Mixed mode 最适合我。

Mixed mode installations - For an installation usable by all users on the system - with isolated rubies/gemsets within a user's $HOME. Installation instructions are exactly the same as for Multi-User installations, the difference is in users environment.

我按照 RVM 官方文档上的方法,用管理员用户安装了 RVM 后,所有的用户能够正常使用管理员用户安装的 Ruby 和 Gems,但是用普通用户执行 rvm user gemsets 但是确没有实现我要的结果,使用系统 Ruby 但是每个用户将 Gems 安装在当前用户目录下,哪位有这方面的经验?

# Rubies installed in system, gemsets separated per user
$ rvm user gemsets 

我貌似没有这么用,我还是全部都是 user mode 然后 passenger + nginx 的方法,passenger 有个 sudo 的安装方式,他可以使用 user mode 的 rvm, 甚至是.rvmrc

目前我最新的一个服务器就是管理员 root 安装了 rvm 然后在 capistrano 配置里加上

require "rvm/capistrano"
require "bundler/capistrano"

set :use_sudo, false
set :user, "www"

www 为普通用户,

cap deploy 时,会自动 bundle install,将 gem 安装到 /path/to/apps/shared/bundle下,起到类似 gemset 的作用。

@lgn21st 有可能我没太理解你的意思。

rvmsudo 有什么不满足你的上述要求的呢?

#3 楼 @Saito 谢谢,rvmsudo 满足了我的所有要求。最初我只是看到 RVM 官网上有关于Mixed mode的介绍,测试了一下发现没有效果,所以有此一问 :-)

@foxzool +1 我也是 capistrano 里加 set :use_sudo, false set :user, "www" 来做的,这样都打包在了 /**/rails_apps/shared/bundle 下,比较方便,不会出现 bundle path 的问题 gemset 这东西基本上没用了

#4 楼 @lgn21st 最初第一次使用rvmsudo 是:

rvmsudo thin start -p 80

XXD

最好的部署方式就是 RVM 用普通用户权限跑 Rails

上一次部署,我采用的是Multi-User, 一台机器,部署了两个 rails 应用, 两个应用分别使用不同的 gemset, 但是使用相同的 ruby version。 这是我部署的日志 https://github.com/ery/deploy-rails/tree/master/2012.1.12

我一直想尝试Mixed mode 但是不知道,到底什么样的需求, 只能使用Mixed mode

@lgn21st 很抱歉,帮不上你啦。 但是,祝你能尽早解决问题, 成功的使用Mixed mode installations部署。 然后,写个部署心得啥的,跟我们分享一下。

跑个题,我觉得 rvm 今后应该 抛弃Single-UserMulti-User模式, 只保留Mixed mode

需要 登录 后方可回复, 如果你还没有账号请 注册新账号