2013-11-24 91 views
1

我試圖在VPS上部署我的rails應用程序時遇到了大問題。 我在Rails應用程序公共/文件夾中有一些文件,例如public/javascripts/home-menu.js,並且我還使用Sprocket預編譯爲公共/資產。Rails的乘客Apache不是服務器公共/資產

在我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應用程序的服務很好,對公共/目錄下的所有文件無法送達。錯誤如下所示。

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 [email protected] 
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 /家庭/ gadgettr /公/家庭/ gadgettr /的public_html

不過,我解決不了我的問題,仍然得到同樣的路由錯誤。爲什麼Apache不提供我的靜態文件?

花了整整一天的時間來調試這個...真的需要我可以擁有的所有幫助!感謝你的幫助!

+0

爲什麼你的公共目錄中有一個Javascript文件夾?爲什麼不在資產目錄或Vendor目錄中的javascript文件夾中使用javascript文件夾? – fatfrog

+0

當我把公共/資產文件夾中的JavaScript,我得到預編譯錯誤消息。 – jaxxie

回答

0

我已經解決了這個問題!這是許可問題

由於我使用'root'用戶創建/ home/gadgettr,因此問題開始了。因此所有者是root而不是gadgettr。要解決此問題,請使用WHM刪除用戶並重新創建一個新用戶。然後使用創建的用戶而不是使用root來設置您的rails應用程序。

這應該解決所有問題:)

+0

我也很難學會這一點。以root身份進行安裝確實會讓您的系統變得非常糟糕。 – fatfrog

相關問題