Ruby on rails 乘客Apache for Rails非服务器公共/资产

Ruby on rails 乘客Apache for Rails非服务器公共/资产,ruby-on-rails,ruby,ruby-on-rails-3,apache,passenger,Ruby On Rails,Ruby,Ruby On Rails 3,Apache,Passenger,我尝试在VPS上部署rails应用程序时遇到了一个大问题。 我在rails应用程序public/文件夹中有一些文件,比如public/javascripts/home-menu.js,我还使用Sprocket预编译到public/assets中 在my production.rb设置中 config.serve_static_assets = false #i want to serve through Apache not rails config.assets.compress = true

我尝试在VPS上部署rails应用程序时遇到了一个大问题。 我在rails应用程序public/文件夹中有一些文件,比如public/javascripts/home-menu.js,我还使用Sprocket预编译到public/assets中

在my 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/directory上的所有文件。错误如下所示

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*

在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>
我无法更改文档root/home/gadgettr/public\u html,因此我创建了一个别名 ln-s/home/gadgettr/public/home/gadgettr/public\u html

然而,我不能解决我的问题,仍然得到相同的路由错误。为什么Apache不为我的静态文件提供服务


花了一整天的时间调试这个。。。我真的需要所有的帮助!谢谢你的帮助

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

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


这应该可以解决所有问题:

为什么您的公共目录中有一个Javascript文件夹?为什么不使用资产目录中的javascript文件夹或供应商目录中的javascript文件夹?您是否尝试过遵循此指南?当我把javascript放在public/assets文件夹中时,我收到一条预编译的错误消息。我也通过艰苦的方式学到了这一点。以root用户身份安装会让系统变得一团糟。
<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>