我正在尝试在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不提供我的静态文件?
花了一整天的时间来调试这个......真的需要我能提供的所有帮助!感谢您的帮助!
答案 0 :(得分:0)
我已经解决了这个问题!这是许可问题
问题开始是因为我使用'root'用户来创建/ home / gadgettr。因此所有者是root而不是gadgettr。要解决此问题,请使用WHM删除用户并重新创建一个新用户。然后使用创建的用户,而不是使用root来设置rails应用程序。
这应解决所有问题:)