为什么我的Rails应用程序没有使用Passenger 3,RVM和Rails 3.1加载?

时间:2012-01-11 22:43:05

标签: ruby-on-rails ruby passenger

我在Ubuntu上使用Passenger 3,Apache,RVM和Rails 3.1应用程序时遇到了困难。出于某种原因,Rails应用程序没有加载,但我之前运行的基本相同,没有问题。

我在RVM和Passenger中安装了Ruby 1.9.2,默认安装了所有宝石。

我将以下内容放在apache.conf文件中:

LoadModule passenger_module /usr/local/rvm/gems/ruby-1.9.2-p290/gems/passenger-3.0.11/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/rvm/gems/ruby-1.9.2-p290/gems/passenger-3.0.11
PassengerRuby /usr/local/rvm/wrappers/ruby-1.9.2-p290/ruby

这是我的虚拟主机配置:

<VirtualHost *:80>
  ServerName server
  DocumentRoot /root/www/tester/public
  <Directory /root/www/tester/public>
    Allow from all
    Options -MultiViews
  </Directory>
</VirtualHost>

Passenger似乎正在加载,正如Apache日志所示:

[Wed Jan 11 23:18:28 2012] [notice] Apache/2.2.20 (Ubuntu) Phusion_Passenger/3.0.11 configured -- resuming normal operations

但是,我根本无法加载应用程序。

如果我单独运行Passenger,我会收到以下错误:

2012/01/11 23:03:31 [error] 13427#0: *4 "/root/www/sound/public/index.html" is forbidden (13: Permission denied), client: 127.0.0.1, server: _, request: "HEAD / HTTP/1.1", host: "0.0.0.0"

我将所有权限更改为755并将所有权归给apache (www-data),但无济于事。

最后,当我运行乘客身份时,我得到:

----------- General information -----------
  max      = 6
  count    = 0
  active   = 0
  inactive = 0
 Waiting on global queue: 0

----------- Application groups -----------

但是,正如您所看到的,没有加载应用程序。

2 个答案:

答案 0 :(得分:3)

修复! - 我需要删除启用站点的目录中的默认虚拟主机文件!

答案 1 :(得分:1)

我的猜测是你正在寻找合适的地方, 它与用户权限有关。

乘客的第1号规则是;

  • Passenger将以拥有&#34; config / environment.rb&#34;的用户身份运行(或&#34; config.ru&#34;对于机架应用程序)

另外,我建议,不要以root身份运行。

/var/www/var/rails是放置rails应用的常用位置

但我通常最终会为每个应用程序提供一个用户,并将其放在主目录中。

即,对于我的申请,我有;

  1. 用户myapp
  2. 目录/home/myapp/deploy/
  3. /home/myapp/deploy/current
  4. 代码的符号链接
  5. 所有这些目录归myapp
  6. 所有

    我的apache配置类似于

    <VirtualHost *:80>
      ServerName myapp.com
      DocumentRoot /home/myapp/deploy/current
    </VirtualHost>
    

    对我而言,这使得所有权分离明确, 并避免任何这些问题。

    (值得注意的是,通过capistrano完成的所有任务都以myapp用户身份完成)