【问题标题】:Why is my Rails app not loading using Passenger 3, RVM and Rails 3.1?为什么我的 Rails 应用程序没有使用 Passenger 3、RVM 和 Rails 3.1 加载?
【发布时间】:2012-01-11 22:43:05
【问题描述】:

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

我在 RVM 中安装了 Ruby 1.9.2,并在默认情况下安装了所有 gem。

我将以下内容放入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>

乘客似乎正在加载,如 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 -----------

但是,如您所见,没有加载任何应用程序。

【问题讨论】:

    标签: ruby-on-rails ruby passenger


    【解决方案1】:

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

    【讨论】:

    • 这也是我的问题!
    • 这个启用站点的目录在哪里? / 编辑它在 Debian Wheezy 上的 /etc/apache2 中。
    【解决方案2】:

    我猜你找对地方了, 它与用户权限有关。

    乘客的第一条规则是;

    • Passenger 将以拥有“config/environment.rb”(或机架应用程序的“config.ru”)的用户身份运行

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

    /var/www/var/rails 是放置 Rails 应用程序的常见位置

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

    也就是说,对于我的申请,我有;

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

    我的 apache 配置类似于

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

    对我来说,这使所有权的分离变得清晰, 并避免任何这些问题。

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

    【讨论】:

    • 其实..再看一遍,你的错误是/root/www/sound/public/index.html ...这是一个不同的虚拟主机吗?
    • 好的,谢谢您的回复。我将应用程序放在 /var/www 中,现在它被 apache2 列出(如预期的那样),但乘客没有提供服务。伙计,我非常感谢您的帮助,这很烦人,因为我什至无法调试它。
    • 我还更改了 root sudo chmod -R 755 sound 和 sudo chown -R root:root sound 的权限,然后以 root 身份重新启动 apache,但再次没有运气。
    • 已修复! - 我需要删除启用站点的目录中的默认虚拟主机文件!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-09
    • 1970-01-01
    • 1970-01-01
    • 2012-10-16
    • 1970-01-01
    • 2011-12-30
    相关资源
    最近更新 更多