Phusion Passenger处理具有多个RVM红宝石的多个项目的问题

时间:2014-04-25 08:47:57

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

嘿,我使用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时,它会显示下面给出的错误。 enter image description here

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

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

3 个答案:

答案 0 :(得分:0)

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

在项目目录中使用所需的设置版本,即ruby-1.8.7-p374并尝试使用.ruby-version。

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

答案 1 :(得分:0)

转到项目目录并逐个运行以下命令:

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

希望有所帮助:)

答案 2 :(得分:0)

我在这里看到两个问题:

  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. 正如您在&#34;用户和群组&#34;下看到的那样,Phusion Passenger正试图将您的应用程序作为&#34; nobody&#34;用户。这可能不是你想要的!使用PassengerUser更改您的应用执行的用户。
  3. 另外,您应该升级到最新版本的Phusion Passenger 4.0.41,以获取最新的错误修复。