代码之家  ›  专栏  ›  技术社区  ›  Rob Cameron

RVM和thin,root与本地用户

  •  26
  • Rob Cameron  · 技术社区  · 15 年前

    所以我试着用RVM来运行一个服务。过了一段时间 thin install /etc/init.d/thin su - user 运行config命令时,使thin作为本地用户而不是root用户运行。到现在为止,一直都还不错。

    sudo service thin start 它看起来像是在尝试使用非RVM版本的Ruby(1.8.7,它首先安装在box上)来实际执行命令。我做了一个 gem install thin 在非RVM版本上,这让我 uninitialized constant Bundler 消息绑定器仅安装在RVM gems中,而不是系统gems中。看起来我无法设置RVM环境(即使我的RVM启动脚本在~/.bashrc中,它随后包含在~/.bash\u概要文件中)。

    我只想使用RVM环境而不是系统环境作为服务运行。这有可能吗?我是否应该放弃并犯下把一切都当作根来管理的大罪?这一点很诱人。

    谢谢你的帮助!

    4 回复  |  直到 15 年前
        1
  •  84
  •   Community CDub    5 年前

    RVM附带了一个方便的包装生成器,它为init.d脚本创建一个中间加载程序。这允许您使用特定的Ruby版本和gemset加载服务。我这样使用它(在安装了瘦宝石之后):

    1-为精简创建init.d条目

    sudo thin install 
    

    2-设置一些默认值

    sudo /usr/sbin/update-rc.d -f thin defaults 
    

    sudo thin config -C /etc/thin/<appname>.yml -c /var/rails/<appdir> --servers 4 -e production
    

    4-生成rvm包装器脚本

    rvm wrapper <rubyversion>@<gemset> bootup thin
    

    5-如果您使用的是全局gemset,您可以使用

    rvm wrapper ruby-1.9.2-p125 bootup thin
    

    sudo nano /etc/init.d/thin
    

    7-更换原装载机

    DAEMON=/usr/local/rvm/gems/ruby-<rubyversion>-<rubyrevision>@<gemset>/bin/thin
    

    DAEMON=/usr/local/bin/bootup_thin
    

    9-启动

    sudo service thin start
    

    http://wiki.rubyonrails.org/deployment/nginx-thin?rev=1233246014 ?rev=...

    HTH公司

    2013年奖金编辑

    虽然我不再在生产中使用RVM,但thin仍然是我选择的生产服务器,我仍然使用上面的步骤1-3开始。但它生成的默认配置可以通过一些调整来实现,下面是我的一些建议:

    设置用户;精简运行的组:

    user: www-data
    group: www-data
    

    删除端口配置并改为使用套接字(稍微快一点):

    # port: 3000
    socket: tmp/sockets/<appname>.sock
    

    告诉thin逐个重新启动实例,而不是在重新启动前将它们全部关闭(滚动重新启动):

    onebyone: true
    

    为服务器进程提供一个“标记”以帮助识别它们(在ps aux等中):

    tag: <appname>
    
        2
  •  22
  •   Philip Kirkbride    8 年前

    rvmsudo thin install
    
    rvmsudo update-rc.d -f thin defaults
    
        3
  •  5
  •   Joel AZEMAR    14 年前

    sudo nano /etc/init.d/myapp1.8.7
    

    保留原始加载程序

    DAEMON=/usr/local/rvm/gems/ruby-<rubyversion>-<rubyrevision>@<gemset>/bin/thin
    

    $DAEMON -C /etc/thin/$NAME.yml start
    

    然后启动它

    sudo service myapp1.8.7 start
    

    sudo service myapp1.9.2 start
    
        4
  •  0
  •   Conor    11 年前

    对于一个简单的独立安装解决方案,我为用户添加了“rvm requirements”的root权限,然后使用visudo username ALL=(ALL:ALL)ALL删除了这些权限

    https://www.digitalocean.com/community/articles/how-to-add-delete-and-grant-sudo-privileges-to-users-on-a-debian-vps

    我更改了权限,以便所有用户都可以读/写/执行;

    当更新GEMS时,您将从RVM得到关于所有用户对此文件夹具有读/写/执行访问权限的警告