前提・実現したいこと
世界一丁寧なAWS解説を参考にしながら、
ローカルで開発したRuby on Railsで作ったサイトを、
AWS上のPRODUCTION環境で動かしたい
(UnicornとNginxを使用)
発生している問題・エラーメッセージ
ローカル上では問題なく読み込まれていた/app/assets/配下の画像、CSS、jsが、
本番環境のプリコンパイルで、/public/配下に移ったら、うまく読み込まれなくなりました。
ブラウザで静的IPを叩けば、HTML構造は閲覧でき、
別途publicディレクトリの画像のURLを直で叩くとブラウザで閲覧できるので、
参照先の指定がうまくいっていない模様。
ChromeでHTMLのソースを確認したところ、下記のように記述されていました。
(前略) <link rel="stylesheet" media="all" href="/stylesheets/application.css" data-turbolinks-track="true"> (中略) <script src="/javascripts/application.js" data-turbolinks-track="true"></script> (中略) <img src="/images/logo.png" alt="Logo"> (後略)
chromeの検証ツールでエラーを確認したところ、下記のようなエラーが出ていました
GET http://**.**.**.***/stylesheets/application.css 404 (Not Found) GET http://**.**.**.***/javascripts/application.js 404 (Not Found) GET http://**.**.**.***/images/logo.png 404 (Not Found)
public/assets/配下はこれらのようにファイル種別ごとにディレクトリは切られておらず、
画像もcssもjsもすべて同階層にプリコンパイルされています。
また、ファイル名には全てfingerprintが付与されているため、
このようなソースではディレクトリ指定があっていたとしても、
読み込まれないのではと思っています。
該当のソースコード
application.html.erb
(前略) <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %> (中略) <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %> (中略) <%= image_tag 'logo.png' %> (後略)
試したこと
Rails Asset Pipelineがうまくいかないときの問題の切り分けかた
を参考に、
「4−■URL例」までは確認しました
・publicディレクトリに画像がプリコンパイルされている
・publicディレクトリの画像のURLを直で叩くとブラウザで閲覧可能
「4-■Webサーバ設定例」については、
/usr/local/nginx-1.6.0/conf/conf.d/test_app.metheglin.jp.conf
が、自分の環境でいうとどこのファイルに当たるのかがわからず、確認できていません。
また、別途、
teratailの「image_tagで画像が表示されません」という質問を参考に、
パスを「../画像名」としてみましたが、画像は表示されないままでした。
さらに、
(原理をきちんと理解できていないので関係ないかもしれませんが)
何かしらの理由で、環境の初期設定がうまくいっておらず、
production環境認定されていないのかもしれないと考え、
rails 初期設定メモを参考に、
export RAILS_SERVE_STATIC_FILES=true
を実行したり、
railsの3つの環境 & 環境の切り替えを参考に、
export RAILS_ENV=production
を実行したりしてみましたが、変化ありませんでした。
原因や対策について、心当たりのある方がいらっしゃいましたら、
教えていただけないでしょうか。
よろしくお願いいたします。
補足情報(FW/ツールのバージョンなど)
AWS EC2
ruby 2.3.1
Rails 4.2.6
unicorn v5.4.0
nginx/1.12.1
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。