2017-01-26 11 views
0

私は最近3から4.2.7への我々のアプリケーションを更新しましたし、今、私たちは、本番環境での問題を抱えている:Railsの4つのアップグレード生産nginxの問題

  1. 資産はtext/htmlではなく、彼らのよう提供されていますそれぞれのcss/jsヘッダ。
  2. (関連する可能性あり)サブディレクトリのプリコンパイルされたアセットが見つかりませんでした。つまり、/cssfile.cssが正常にロードされたことを意味します。/subdir/cssfile.cssは正しくありません。

アップグレード中にnginx設定ファイルに変更はありませんでした。設定/環境/ production.rbの変化は、以下の通りである:私はことをどこかで読んだので、それは、なぜ起こったか、私はそれを削除して、展開に

+ config.eager_load = true 
- config.serve_static_assets = false 
+ config.serve_static_files = false 
- config.assets.compress = true 
+ config.assets.js_compressor = :uglifier 
+ config.assets.css_compressor = :sass 

config.assets.css_compressor = :sassは、問題を引き起こし、必ず、プリコンパイル正常に終了しませんRails 4のデフォルトのcss_compressorは:sassです。ここで

は、サイト上で使用さnginxの設定ファイルです:

upstream SITENAME { 
    server unix:/home/deploy/SITENAME/shared/pids/unicorn.sock; 
} 

server { 
    listen 80; 
    server_name production.SITENAMEart.com; 
    root /home/deploy/SITENAME/current/public; 
    access_log /var/log/nginx/SITENAME.access.log main; 

    client_max_body_size 64M; 

    location ~ ^/assets/ { 
    expires max; 
    add_header Cache-Control public; 
    add_header ETag ""; 
    break; 
    } 

    location ~ ^/(assets)/ { 
    root /home/deploy/SITENAME/current/public; 
    gzip_static on; 
    expires max; 
    add_header Cache-Control public; 
    } 

    location/{ 
    try_files $uri @SITENAME; 
    } 

    location @SITENAME { 
    include proxy.conf; 
    proxy_pass http://SITENAME; 
    } 

    # stats url 
    location /nginx_stats { 
    stub_status on; 
    access_log off; 
    #allow SOME.IP.ADD.RESS; 
    #deny all; 
    } 

} 

server { 
    listen 443; 
    server_name production.SITENAMEart.com; 
    root /home/deploy/SITENAME/current/public; 
    access_log /var/log/nginx/SITENAME.access.log main; 

    ssl on; 
    ssl_certificate   /usr/local/nginx/conf/ssl/wildcard.SITENAMEart.com.crt; 
    ssl_certificate_key  /usr/local/nginx/conf/ssl/wildcard.SITENAMEart.com.key.unsecure; 
    ssl_client_certificate /usr/local/nginx/conf/ssl/geotrust.crt; 

    location ~ ^/assets/ { 
    expires max; 
    add_header Cache-Control public; 
    add_header ETag ""; 
    break; 
    } 

    location/{ 
    try_files $uri @SITENAME; 
    proxy_set_header X-Forwarded-Proto https; 
    } 

    location @SITENAME { 
    include proxy.conf; 
    proxy_pass http://SITENAME; 
    proxy_set_header X-Forwarded-Proto https; 
    } 

    # stats url 
    location /nginx_stats { 
    stub_status on; 
    access_log off; 
    } 

} 

最も私を驚かせる何のリリースを徹底的に生産に展開する前にステージングでテストし、それがnginxの設定ファイルを持っていたことがある - 何も問題はあり現れません。

答えて

0

問題は解決されました。それはCapistrano v2から移植されたカスタムのシンボリックリンクスクリプトに関連していました。このスクリプトは、アセットが生成された後、public/assetsディレクトリの内容を削除しました。

私はまだこれが私たちのステージングサーバー上の問題ではないことを知りません。

関連する問題