5

私は VPS を構築しています。それは Capistrano 経由でデプロイされ、データベースに接続されていますが、ページで利用できるアセットはありません - 基本的な html のみです。

アセットはコンパイルされたように見え、共有ディレクトリに存在します。

ページhtmlから:

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

アセット ファイルは共有ディレクトリに存在するようです。

assay@assaypipeline:~/apps/assay/shared/assets$ ls application-  a1b5d69aeaff709fd3dce163c559b38b.css
application-a1b5d69aeaff709fd3dce163c559b38b.css

表示、ソース、アセット パスへのハイパーリンクをクリックすると、Nginx から 404 not found が表示されます。

解決

Martin M (受け入れられた回答) の助けに感謝します。サーバーの ~/apps/(app name)/current ディレクトリから実行した手順。

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

明らかに、これをカピストラーノのレシピに含めたほうがよいでしょう。

*編集 - Capfile *

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

2 に答える 2

5

プリコンパイルされたアセットは に存在する必要があります。 通常はRails ガイドpublic/assetsを参照して、実行して作成します

RAILS_ENV=production bundle exec rake assets:precompile

展開の一部として。
共有されるものは、いくつかのデプロイにわたって古いものを提供することです。

この質問も参照してください

于 2013-07-18T10:14:46.550 に答える
4

問題は、アセットのコンパイルと展開にあるのではない可能性があります。nginx root /home/deploy/app_name/public; を変更してみてください。/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;
}

お役に立てれば

于 2016-10-05T13:28:18.593 に答える