【问题标题】:Problem running ruby app under passenger with rvm使用 rvm 在乘客下运行 ruby​​ 应用程序时出现问题
【发布时间】:2011-08-01 15:47:01
【问题描述】:

我已经切换了一个 ruby​​ 应用程序(使用 Thoth,它又使用 Ramaze)在 rvm ruby​​@gemset 组合中使用捆绑器工作。我可以访问它的控制台版本,所以它很高兴它有什么宝石。但是,当我尝试通过服务器访问它时(通过 nginx 下的乘客),我从乘客那里收到此错误:

在任何源中都找不到 activesupport-2.3.8 (Bundler::GemNotFound)

我不明白这一点,因为我在 rvm 的应用程序 gemset 中安装了 activesupport 2.3.8。也许乘客不知道 rvm,或者知道使用正确的 rvm?我不确定乘客如何连接到我的应用程序,以及它是否需要了解 rvm 等信息。我见过的对乘客的唯一引用是在我的 nginx 配置块中,我说passenger_enabled on;

还有其他人遇到过这种性质的问题吗?

最大

编辑:有关我的设置的更多详细信息:

我的应用在/var/www/apps/akrotoski 这是在一个名为ruby-1.8.7-p302@akrotoski的rvm/gemset中@

我突然想到这可能是 nginx 在 root 下运行的问题。如果我切换到 root 并执行 echo $PATH 我得到 ​​p>

/opt/ruby-enterprise-1.8.7-2011.01/bin/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

如果我在我的应用程序的 rvm 中 echo $PATH 我得到 ​​p>

/home/deploy/.rvm/gems/ruby-1.8.7-p302@akrotoski/bin:/home/deploy/.rvm/gems/ruby-1.8.7-p302@global/bin:/home/deploy/.rvm/rubies/ruby-1.8.7-p302/bin:/home/deploy/.rvm/bin:/opt/ruby-enterprise-1.8.7-2011.01/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

所以也许 nginx/passenger 正在以不使用 rvm 的方式运行?就像我说的,我完全不知道乘客是如何以这种方式连接到应用程序的。

【问题讨论】:

  • 你是如何开始乘客/nginx的?您使用的是什么命令以及从哪个目录运行它?
  • 嗨,潘。我用/etc/init.d/nginx restart 启动nginx。因为我启用了passenger_enabled;在我的 nginx 配置中阻止此应用程序,然后它应该自动拾取它。我可以在应用程序的根文件夹中使用touch tmp/restart.txt 重新启动启用乘客的应用程序。我将在我的 OP 中添加更多关于文件夹等的详细信息。
  • 您是将 rvm 安装为 sudo 和系统范围还是仅针对特定用户?
  • 只针对特定用户 - 我想这是我的错误? (见对 OP 的编辑)。我刚刚切换到 root 并执行了“rvm”,但它无法识别该命令。您需要执行 .bashrc hack 才能使用 rvm 命令http://www.christopherirish.com/2010/08/25/how-to-install-rvm-on-ubuntu-10-04/comment-page-1/#comment-103,我在 root 的 .bashrc 中尝试过,但没有帮助。所以,我想我搞砸了。您认为解决此问题的最佳方法是什么,即也授予对 rvm 的 root 访问权限?我应该以root身份再次安装它吗?这会引起冲突吗?

标签: ruby gem passenger rvm bundler


【解决方案1】:

您需要以 root 身份安装 RVM,以便它是系统范围的安装,并且安装在 /usr/local/rvm 中:

sudo bash < <(curl -s https://rvm.beginrescueend.com/install/rvm)

您可以阅读更多关于安装的here。此外,您需要确保您的默认 rvm 是启动 nginx 应用程序的正确的。例如,您可能想要执行以下操作:

sudo rvm --default 1.8.7@akrotoski
sudo /etc/init.d/nginx restart

【讨论】:

  • 酷 - 我应该卸载我在“部署”用户下安装的 rvm,你认为呢?
  • 这可能是个好主意,这样可以确保从全新安装开始。
  • pan - 我按照 rvm 主页(与您在上面发布的减去 sudo 相同)进行了安装,同时是 root,并按照有关编辑 .bashrc (/root/.bashrc) 的说明进行操作在这种情况下)添加额外的最后一行。但是当我尝试调用 rvm 时,我仍然得到bash: rvm: command not found。我还尝试完全按照您的命令进行操作,即使用 sudo 安装 rvm,并使用 sudo 设置默认 rvm,然后使用 sudo 切换到该默认值。然后nginx重启了,还是一样的问题:(
  • 在您的乘客配置中,乘客指向哪个红宝石?如果您明确设置了此定义,则可能应该删除此定义,因为它将覆盖系统默认值。如果没有明确设置,请尝试将其设置为 ruby​​+gemset 二进制文件。
  • 我把安装了 rvm 的 ruby​​ 版本放在路径的第一位(没有触及乘客配置,因为它只是使用 PATH),然后重新启动了 nginx,这样就完成了。谢谢!但是,如果我想在同一个盒子上运行多个应用程序,每个应用程序都有自己的 ruby​​ 版本,会发生什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多