2013-07-18 23 views
5

我建立一個VPS,它的通過Capistrano的,數據庫連接等部署,但沒有可用的頁面資產 - 這只是基本的HTML。Rails的資產Capistrano的後失蹤部署

資產似乎被編譯,並且存在於共享目錄。

從頁面的html:

<link href="/assets/application-a1b5d69aeaff709fd3dce163c559b38b.css" media="all" rel="stylesheet" type="text/css" /> 
<script src="/assets/application-0ebd07089629f8c6880dddfb688d525d.js" type="text/javascript"></script> 

文件出現在存在資產共享目錄:

[email protected]:~/apps/assay/shared/assets$ ls application- a1b5d69aeaff709fd3dce163c559b38b.css 
application-a1b5d69aeaff709fd3dce163c559b38b.css 

當我視圖,源,然後單擊超鏈接資產路徑,我找不到Nginx的404。

SOLUTION

感謝Martin M(接受的答案)尋求幫助。我從服務器上的〜/ apps /(應用程序名稱)/當前目錄中執行的步驟。

$ bundle install 
$ RAILS_ENV=production bundle exec rake assets:precompile 
$ sudo service nginx restart 

很明顯,將它包含在Capistrano食譜中會更好。

* 編輯 - Capfile *

load 'deploy' 
load 'deploy/assets' 
load 'config/deploy' 

回答

4

你的預編譯的資產應位於public/assets,看到運行

RAILS_ENV=production bundle exec rake assets:precompile 

作爲部署的一部分rails guides
通常你創建它們。
共享的東西是在幾個展開時提供的舊東西。

參見本question

+0

謝謝您的回答。預編譯應該在開發機器還是生產服務器上運行?有沒有辦法將這個包含在Cap部署中? – ardochhigh

+0

「標準」方法是激活線'負載「部署在'Capfile'/assets''。它在每個部署的服務器上運行「預編譯」。 –

+0

我確實有。我已經在上面添加了我的capfile。 – ardochhigh

4

的問題可能不會在資產編譯和部署。 嘗試改變nginx的根目錄的/ home /部署/ APP_NAME /公;到/ home/deploy/app_name/current/public;在nginx配置文件/ etc/nginx/sites-enabled/default下。

sudo nano /etc/nginx/sites-enabled/default 

以下是我的配置文件

upstream app { 
    # Path to Puma SOCK file, as defined previously 
    server unix:/home/deploy/app_name/shared/tmp/sockets/puma.sock fail_timeout=0; 
} 
server { 
    listen 80; 
    server_name localhost; 

    root /home/deploy/app_name/current/public; 

    try_files $uri/index.html $uri @app; 

    location/{ 
    proxy_set_header X-Forwarded-Proto $scheme; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header Host $host; 
    proxy_redirect off; 
    proxy_http_version 1.1; 
    proxy_set_header Connection ''; 
    proxy_pass http://app; 
    } 

    location ~ ^/(assets|fonts|system)/|favicon.ico|robots.txt { 
    gzip_static on; 
    expires max; 
    add_header Cache-Control public; 
    } 

    error_page 500 502 503 504 /500.html; 
    client_max_body_size 4G; 
    keepalive_timeout 10; 
} 

希望這有助於

+0

太棒了!這是問題。 – loxosceles

相關問題