使用Passenger部署的Rails应用程序只显示应用程序公共目录的索引

时间:2010-01-19 19:30:49

标签: ruby-on-rails passenger

我正在尝试使用Passenger在Ubuntu 9.04上部署Rails应用程序。

据我所见,我已正确配置所有内容;但是,当我将浏览器指向我的域时,我看到的只是应用程序公共目录的索引。

我的预感是乘客没有启动 - 在just-plain-folks.co.uk的底部根本没有提到乘客。日志文件中没什么有趣的。

这是我的配置:

/etc/apache2/mods-enabled/passenger.conf

<IfModule passenger_module>
   PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.2.9
   PassengerRuby /usr/bin/ruby1.8
</IfModule>

/etc/apache2/mods-enabled/passenger.load

LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.2.9/ext/apache2/mod_passenger.so

/etc/apache2/sites-enabled/just-plain-folks.co.uk

<VirtualHost *:80>
    ServerAdmin admin@just-plain-folks.co.uk
    ServerName just-plain-folks.co.uk
    ServerAlias www.just-plain-folks.co.uk
    DocumentRoot /srv/www/just-plain-folks.co.uk/public_html/
    ErrorLog /srv/www/just-plain-folks.co.uk/logs/error.log
    CustomLog /srv/www/just-plain-folks.co.uk/logs/access.log combined
</VirtualHost>

/srv/www/just-plain-folks.co.uk/public_html/是我的应用程序公共目录的simlink


如果还有其他可能对诊断有用的信息,请告诉我。非常感谢任何帮助!

3 个答案:

答案 0 :(得分:3)

尝试放弃符号链接并直接指向公共。我相信乘客在这方面有点神奇,因为它如何检测rails应用程序。

即使符号链接源被称为公共,我怀疑它仍然会在/srv/www/just-plain-folks.co.uk/中寻找rails_root。

答案 1 :(得分:0)

(更新:我错过了你试图从docroot提供服务的事实)

尝试关闭MultiViews

<VirtualHost *:80>

  ...

  <Directory /srv/www/just-plain-folks.co.uk/public_html>
      Allow from all
      Options -MultiViews
  </Directory>

</VirtualHost>

答案 2 :(得分:0)

好吧,我和Sinatra,Phusion Passenger和Apache有类似的问题。我的公共目录嵌套在深处,与views目录相同。

因此,以下配置使我的应用程序运行。

  • 在apache的conf文件中,我只需在/home/me/projects/fantasy-app/somewhere/nested/public/home/me/projects/fantasy-app/public指令中使用DocumentRoot,而不是<Directory>
  • app.rb引用的onfig.ru中,我有以下内容:

    set :public_folder, 'build/development/public'
    set :views, Proc.new { File.join(root, "build/development/views") }