Passenger Apache for Rails不是服务器公共/资产

时间:2013-11-24 18:52:00

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

我正在尝试在VPS上部署我的rails应用程序时遇到大问题。 我在rails app public /文件夹中有一些文件,例如public / javascripts / home-menu.js,我还使用Sprocket预编译成公共/资产。

在我的production.rb设置

config.serve_static_assets = false #i want to serve through Apache not rails
config.assets.compress = true
config.assets.compile = false
config.assets.digest = true

当rails应用程序正常运行时,无法提供public /目录中的所有文件。错误如下所示。

Routing Error

No route matches [GET] "/assets/application-fbbe68455909a54f6d39e01d3ab38d34.js"
Try running rake routes for more information on available routes.

我认为Apache设置有问题,所以我进去检查。拥有CPanel,Apache设置会自动设置。我将以下内容添加到“/ usr / local / apache / conf / userdata / std / 2 / gadgettr / mydomain.com / .conf”*

  <Directory /home/gadgettr/public>
     # This relaxes Apache security settings.
     AllowOverride all
     # MultiViews must be turned off.
     Options -MultiViews

     #Options FollowSymLinks
     #AllowOverride None
     #Order allow,deny
     #Allow from all
  </Directory>

在http.conf中

<VirtualHost 103.15.232.XXX:80>
ServerName mydomain.com
ServerAlias www.mydomain.com
DocumentRoot /home/gadgettr/public_html
ServerAdmin webmaster@mydomain.com
UseCanonicalName Off

## User gadgettr # Needed for Cpanel::ApacheConf
UserDir enabled gadgettr
<IfModule mod_suphp.c>
    suPHP_UserGroup gadgettr gadgettr
</IfModule>
<IfModule !mod_disable_suexec.c>
    <IfModule !mod_ruid2.c>
        SuexecUserGroup gadgettr gadgettr
    </IfModule>
</IfModule>
<IfModule mod_ruid2.c>
    RMode config
    RUidGid gadgettr gadgettr
</IfModule>
<IfModule itk.c>
    # For more information on MPM ITK, please read:
    #   http://mpm-itk.sesse.net/
    AssignUserID gadgettr gadgettr
</IfModule>
ScriptAlias /cgi-bin/ /home/gadgettr/public_html/cgi-bin/

Include "/usr/local/apache/conf/userdata/std/2/gadgettr/gadgettrader.sg/*.conf"

</VirtualHost>

我无法更改DocumentRoot / home / gadgettr / public_html,因此我创建了一个别名     ln -s / home / gadgettr / public / home / gadgettr / public_html

但是我无法解决我的问题,仍然会遇到相同的路由错误。为什么Apache不提供我的静态文件?

花了一整天的时间来调试这个......真的需要我能提供的所有帮助!感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我已经解决了这个问题!这是许可问题

问题开始是因为我使用'root'用户来创建/ home / gadgettr。因此所有者是root而不是gadgettr。要解决此问题,请使用WHM删除用户并重新创建一个新用户。然后使用创建的用户,而不是使用root来设置rails应用程序。

这应解决所有问题:)