【问题标题】:Issue with Phusion Passenger handling multiple projects with multiple RVM rubiesPhusion Passenger 使用多个 RVM 红宝石处理多个项目的问题
【发布时间】:2014-04-25 08:47:56
【问题描述】:

嘿,我已经使用phusion Passenger(4.0.20)Rails 3.0.3 以及Ruby ruby-1.8.7-p374 在服务器中部署了我的Rails 应用程序之一。在同一系统中,我们还使用其他 Rails 和 Ruby 版本管理其他 Rails 项目。我们正在使用RVM 来管理红宝石。

做rvm列表显示:

rvm rubies

   ruby-1.8.7-p371 [ x86_64 ]
=* ruby-1.8.7-p374 [ x86_64 ]
   ruby-2.0.0-p353 [ x86_64 ]
   ruby-2.0.0-p451 [ x86_64 ]
   ruby-2.1.0 [ x86_64 ]
   ruby-2.1.1 [ x86_64 ]

# => - current
# =* - current && default
#  * - default

我在运行时遇到问题的项目是使用ruby-1.8.7-p374Rails 3.0.3。现在,当我获取 URL 时,它会显示以下给定的错误。

重新启动了 apache,重新启动了乘客,但我们遇到了 ruby-2.0.0-p451 的问题,我们安装它是为了管理另一个 Rails 应用程序。

可能是什么原因?请帮忙:)

【问题讨论】:

  • 您确定您的用户有权访问rvm
  • 是的,我已经使用rvm fix-permissions 修复了它。

标签: ruby-on-rails ruby ruby-on-rails-3 apache passenger


【解决方案1】:

您的项目目录中有 .ruby-version 吗?您的项目正在尝试加载 ruby-2.0.0-p451 而不是 ruby-1.8.7-p374

在您的项目目录中有一个 .ruby-version 与您想要的设置版本,即 ruby-1.8.7-p374 并尝试。

Use rvmrc or ruby-version file to set a project gemset with RVM?

【讨论】:

  • 当我从我的项目目录运行ruby -v 时,它清楚地表明它正在使用ruby-1.8.7-p374。所以,事实并非如此。不管怎样,谢谢你的回复。
  • 你是单独运行乘客还是与 nginx 一起运行?
  • 你可以看到标签,我正在使用 apache 模块运行乘客。
  • 很抱歉我错过了。以前报告过类似的问题。 stackoverflow.com/questions/6470011/…
  • 我知道。我检查了大多数可用的参考资料,然后只有我尝试在 SO 中发布。谢谢:)
【解决方案2】:

进入项目目录,一一运行以下命令:

rvm use ruby-1.8.7-p374
gem install bundler passenger
rvm passenger-install-apache2-module

这将与 Apache 模块一起安装乘客,这意味着您将被要求向 /etc/apache2/apache2.conf 添加一些配置更改并这样做。

/etc/apache2/sites-available/ 中为您的网站创建一个文件(类似于“www.virtualx.com”)并插入:

<VirtualHost *>
    # Change these 3 lines to suit your project
    RailsEnv production
    ServerName www.virtualx.com
    DocumentRoot /var/www/my_project/public # Note the 'public' directory
</VirtualHost> 

并将PassengerRuby 选项设置为ruby-1.8.7-p374

重启 Apache 服务。你们都完成了。

现在它可以正常工作了。

如果您需要多个 ruby​​ 版本同时用于不同的项目,请参考here

希望对你有帮助:)

【讨论】:

  • 无需在不同的 RVM Ruby 或不同的 gemset 下重新安装 Phusion Passenger。您可以使用任何 RVM Ruby 和任何 gemset 安装 Phusion Passenger,只要您正确配置,结果将适用于 任何其他 RVM Ruby/gemset。见modrails.com/documentation/…
【解决方案3】:

我在这里看到两个问题:

  1. Phusion Passenger 正在尝试使用 /usr/local/rvm/gems/ruby-2.0.0-p451 作为 Ruby 解释器来运行您的应用程序。但是 /usr/local/rvm/gems/ruby-2.0.0-p451 是一个目录,而不是可执行文件!此外,您打算在 ruby​​-1.8.7-p374 下运行您的应用程序,而不是 ruby​​-2.0.0-p451。这意味着您没有正确设置PassengerRuby 选项。阅读http://www.modrails.com/documentation/Users%20guide%20Apache.html#PassengerRuby 以了解如何正确设置它。手册中甚至有一节专门介绍了在使用 RVM 时如何执行此操作。
  2. 正如您在“用户和组”下看到的,Phusion Passenger 正在尝试以“nobody”用户身份执行您的应用程序。这可能不是你想要的!使用 PassengerUser 更改执行您的应用的用户。

附带说明,您应该升级到最新版本的 Phusion Passenger 4.0.41,以获得最新的错误修复。

【讨论】:

  • 感谢您的回答。如果真的有帮助,会检查并接受:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-02
  • 2013-01-22
  • 2011-09-15
  • 1970-01-01
  • 1970-01-01
  • 2013-01-18
相关资源
最近更新 更多