RVM 和瘦、root 与本地用户

2024-01-05

所以我正在尝试精简以作为 RVM 的服务运行。之后thin install我手动更新了/etc/init.d/thin使用su - user运行 config 命令时,thin 作为本地用户而不是 root 运行。到目前为止,一切都很好。

现在,当我尝试sudo service thin start看起来它正在尝试使用非 RVM 版本的 Ruby(1.8.7,首先安装在盒子上)来实际执行命令。我做了一个gem install thin在非 RVM 版本上,然后给我一个uninitialized constant Bundler消息 — Bundler 仅安装在 RVM gems 中,而不安装在系统 gems 中。看起来我无法设置 RVM 环境(即使我的 RVM 启动脚本位于 ~/.bashrc 中,然后该脚本包含在 ~/.bash_profile 中)。

我想要做的就是使用 RVM 环境(而不是系统环境)作为服务来瘦运行。这可能吗?我是否应该放弃并犯下以 root 身份运行一切的终极罪恶?在这一点上这是非常诱人的。

谢谢你的帮助!


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

1 - 为 Thin 创建 init.d 条目

sudo thin install 

2 - 设置一些默认值

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

3 - 为您的 Rails 应用程序生成启动配置

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 - 如果您使用的是全局宝石集,则可以使用

rvm wrapper ruby-1.9.2-p125 bootup thin

6 - 编辑精简初始化

sudo nano /etc/init.d/thin

7-更改原来的loader

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

8 - 改为指向 rvm 包装器

DAEMON=/usr/local/bin/bootup_thin

9 - 启动它

sudo service thin start

如果您运行多个应用程序,只需为每个应用程序生成一个启动配置 yml 文件;当启动 Thin 时,/etc/thin/ 中的所有 yml 文件都会被解析。更多信息请点击这里:

http://wiki.rubyonrails.org/deployment/nginx-thin?rev=1233246014 http://wiki.rubyonrails.org/deployment/nginx-thin?rev=1233246014 注意:这是链接到修订版,最新版本已被编辑为空。考虑查看不带?rev=...在 url 中,当前版本可能会回来并且可能是最新的。

HTH

2013年奖金编辑

虽然我不再在生产中使用 RVM,但 Thin 仍然是我选择的生产服务器,并且我仍然使用上面的步骤 1-3 来开始。但它生成的默认配置可以进行一些调整,以下是我的一些调整:

将 Thin 运行的用户和组设置为:

user: www-data
group: www-data

删除端口配置并切换到使用套接字(更快一点):

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

告诉 Thin 一个一个地重新启动实例,而不是在再次启动之前将它们全部关闭(滚动重新启动):

onebyone: true

给服务器进程一个“标签”来帮助识别它们(在 ps aux 等中):

tag: <appname>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RVM 和瘦、root 与本地用户 的相关文章

  • 在 Ruby 中跨多个类实例记忆数据的好方法是什么?

    考虑 生成数据的对象的许多实例 如果每次运行只生成一次该数据 那就太好了 class HighOfNPeriods lt Indicator def generate data indicator data DataStream new 0
  • Ruby 中多维数组的帮助

    我有以下代码将字符串拆分为 3 个字节的组 str hello ix 0 iy 0 bytes tby str each byte do c if iy 3 iy 0 bytes ix tby each index do i bytes i
  • “没有可用的二元红宝石”是什么意思?

    每当我使用rvm install x x x 即使安装成功 我也会收到此警告 No binary rubies available for osx 10 12 x86 64 ruby 2 4 0 Continuing with compil
  • 从 Ruby 中的 DateTime 变量获取时间

    我在 ruby 中工作 我有一个包含数据库中今天的日期时间的对象 我只想要时间截断数据 我怎样才能得到那个 Try 日期时间 strftime http www ruby doc org stdlib 1 9 3 libdoc date r
  • 捆绑安装无法从 https://rubygems.org/ 获取规格

    我正在尝试遵循 Hartl Rails 教程 但在使用捆绑器 gem 时遇到了问题 使用命令 bundle install 或 bundle update 时 我得到以下输出 从中获取源索引https rubygems org https
  • Rails:CSRF 令牌不工作但已设置

    我在 Heroku 上有我的 Rails 3 应用程序 当我发送银行信息时 我得到 WARNING Can t verify CSRF token authenticity但我的 CSRF 令牌已设置 https gist github c
  • 如何向 Time.now 添加两周?

    如何在 Ruby 中向当前 Time now 添加两周 我有一个使用 DataMapper 的小型 Sinatra 项目 在保存之前 我有一个字段填充了当前时间加上两周 但未按需要工作 任何帮助是极大的赞赏 我收到以下错误 NoMethod
  • Watir 更改 Mozilla Firefox 首选项

    我正在使用 Watir 运行 Ruby 脚本来自动执行一些操作 我正在尝试自动将一些文件保存到某个目录 因此 在我的 Mozilla 设置中 我将默认下载目录设置为桌面并选择自动保存文件 然而 当我开始运行脚本时 这些更改并未反映出来 似乎
  • Ruby 枚举器中的“break”与“raise StopIteration”

    如果我使用 Ruby Enumerators 来实现生成器和过滤器 generator Enumerator new do y x 0 loop do y lt lt x x 1 break if x gt CUTOFF end end l
  • “rmagick”gem 安装问题

    我在尝试在 centos 上安装 rmagick gem 时遇到问题 以下是我得到的输出 谁能帮我识别一下我缺少什么包裹 我已经安装了所有提到的另一个堆栈溢出线程 RMagick安装错误 https stackoverflow com qu
  • 我在 Rails 中使用了保留字吗?

    这是我的模型 class Record lt ActiveRecord Base belongs to user belongs to directory end class Directory lt ActiveRecord Base h
  • Rails - 渲染:目标锚标记的操作?

    我希望像这样使用渲染 render action gt page form 我也尝试过这个 render template gt site page form 那也没用 这个特定页面上的表单位于最底部 如果提交时发生任何错误 我不希望用户被
  • 没有要加载的文件 - ffi_c (LoadError)

    这个问题困扰了我几天 每当我使用 bring to front 方法时 require rubygems require watir browser Watir Browser new browser bring to front 我收到此
  • 在 ruby​​ 中下载多个 FTP 文件,如 d*.txt

    我需要连接到 ftp 站点并下载一堆名为 D txt 的文件 最多 6 个 你能帮我用 Ruby 编写这个代码吗 下面的代码只是 ftp Net FTP new ftp server site ftp login user pwd ftp
  • 如何在 Linux 中编写文本模式 GUI? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 当我编写脚本 程序时 我经常想弹出一个简单的文本 gui 来提示输入 我该怎么做 例如 来自 Shel
  • 存根和 rspec 旧语法的问题

    我正在编写一些代码并使用 rspec 但收到警告 提示语法已过时 我不太清楚应该如何编写它 it should calculate the value correctly do mock cards Card new clubs 5 Car
  • 如何使用 net/http 验证 ruby​​ 中的 SSL 证书链

    我如何验证网站的证书 例如https processing ukash com https processing ukash com 在 ruby 中使用 net http https Net HTTP new processing uka
  • 使用哈希参数进行 DRY Ruby 初始化

    我发现自己经常在构造函数中使用哈希参数 尤其是在为配置或最终用户将接触到的其他 API 编写 DSL 时 我最终做的是类似以下的事情 class Example PROPERTIES name age PROPERTIES each p a
  • 使用 ruby​​ 调整动画 GIF 图像的大小?

    我正在尝试将 GIF 图像调整为不同的尺寸 我在 ruby 中使用 RMagick 库 但对于某些 gif 图像 即使我缩小 GIF 的大小 文件大小似乎也会增加 我正在以相同的纵横比调整图像图像的大小 这是我的代码 require rma
  • Ruby 中的 url_encode

    I read 的文档url encode http rdoc info stdlib erb 1 9 3 ERB Util 3Aurl encode 是否有一个表可以准确地告诉我哪个字符被编码为什么 使用url encode ERB s u

随机推荐