質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

1回答

1423閲覧

AWS(EC2)でRoute 53を使用しドメインを取得するとcssが適用されなくなった。

branchpeach

総合スコア12

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2021/04/17 11:43

編集2021/04/17 17:39

#現在の状況

  • 現在、Capistranoを使用し、AWS(EC2)に自動デプロイを行っております。
  • route53でドメインを設定し、本番環境にアクセスするとcssが適用されなくなりました。(アクセスは可)
  • route53を使用する前のElastic IPで本番環境を確認すると正しく表示されます。

質問

cssが適用されない原因は何か?
適用されるまでに時間がかかるものなのか?

インフラ構築

イメージ説明

エラー

イメージ説明

ruby

1config/deploy/production.rb 2 3server 'Elastic IP', user: 'ec2-user', roles: %w{app db web}

ruby

1config/unicorn.rb 2 3app_path = File.expand_path('../../../', __FILE__) 4 5#アプリケーションサーバの性能を決定する 6worker_processes 1 7 8#アプリケーションの設置されているディレクトリを指定 9working_directory "#{app_path}/current" 10 11#Unicornの起動に必要なファイルの設置場所を指定 12pid "#{app_path}/shared/tmp/pids/unicorn.pid" 13 14#ポート番号を指定 15listen "#{app_path}/shared/tmp/sockets/unicorn.sock" 16 17#エラーのログを記録するファイルを指定 18stderr_path "#{app_path}/shared/log/unicorn.stderr.log" 19 20#通常のログを記録するファイルを指定 21stdout_path "#{app_path}/shared/log/unicorn.stdout.log" 22 23#Railsアプリケーションの応答を待つ上限時間を設定 24timeout 60 25 26#以下は応用的な設定なので説明は割愛 27 28preload_app true 29GC.respond_to?(:copy_on_write_friendly=) && GC.copy_on_write_friendly = true 30 31check_client_connection false 32 33run_once = true 34 35before_fork do |server, worker| 36 defined?(ActiveRecord::Base) && 37 ActiveRecord::Base.connection.disconnect! 38 39 if run_once 40 run_once = false # prevent from firing again 41 end 42 43 old_pid = "#{server.config[:pid]}.oldbin" 44 if File.exist?(old_pid) && server.pid != old_pid 45 begin 46 sig = (worker.nr + 1) >= server.worker_processes ? :QUIT : :TTOU 47 Process.kill(sig, File.read(old_pid).to_i) 48 rescue Errno::ENOENT, Errno::ESRCH => e 49 logger.error e 50 end 51 end 52end 53 54after_fork do |_server, _worker| 55 defined?(ActiveRecord::Base) && ActiveRecord::Base.establish_connection 56end

ruby

1config/deploy.rb 2 3lock '3.16.0' 4 5set :application, 'アプリ名' 6 7# どのリポジトリからアプリをpullするかを指定する 8set :repo_url, 'githubリポジトリ' 9 10# バージョンが変わっても共通で参照するディレクトリを指定 11set :linked_dirs, fetch(:linked_dirs, []).push('log', 'tmp/pids', 'tmp/cache', 'tmp/sockets', 'vendor/bundle', 'public/system', 'public/uploads') 12 13set :rbenv_type, :user 14set :rbenv_ruby, '2.6.5' 15 16# どの公開鍵を利用してデプロイするか 17set :ssh_options, auth_methods: ['publickey'], 18 keys: ['#'] 19 20# プロセス番号を記載したファイルの場所 21set :unicorn_pid, -> { "#{shared_path}/tmp/pids/unicorn.pid" } 22 23# Unicornの設定ファイルの場所 24set :unicorn_config_path, -> { "#{current_path}/config/unicorn.rb" } 25set :keep_releases, 5 26 27# デプロイ処理が終わった後、Unicornを再起動するための記述 28after 'deploy:publishing', 'deploy:restart' 29namespace :deploy do 30 task :restart do 31 invoke 'unicorn:restart' 32 end 33end

ruby

1Capfile 2 3require "capistrano/setup" 4require "capistrano/deploy" 5require 'capistrano/rbenv' 6require 'capistrano/bundler' 7require 'capistrano/rails/assets' 8require 'capistrano/rails/migrations' 9require 'capistrano3/unicorn' 10 11Dir.glob("lib/capistrano/tasks/*.rake").each { |r| import r } 12

ruby

1capistrano.log 2 3WARNING in asset size limit: The following asset(s) exceed the recommended size limit (244 KiB). 4This can impact web performance. 5Assets: 6 js/application-ea23ae402b20ce672355.js (541 KiB) 7 js/application-ea23ae402b20ce672355.js.map.gz (528 KiB) 8 js/application-ea23ae402b20ce672355.js.map.br (447 KiB) 9 10WARNING in entrypoint size limit: The following entrypoint(s) combined asset size exceeds the recommended limit (244 KiB). This can impact web performance. 11Entrypoints: 12 application (541 KiB) 13 js/application-ea23ae402b20ce672355.js 14 15 16WARNING in webpack performance recommendations: 17You can limit the size of your bundles by using import() or require.ensure to lazy load some parts of your application. 18For more info visit https://webpack.js.org/guides/code-splitting/ 19
Nginxエラーログ 2021/04/17 17:08:29 [error] 22948#0: *6 open() "/var/www/アプリケーション名/current/public/assets/application-796485acc5c1b3047846fd111ee629a32c9e3776a00951b710b65463d118fa3f.css" failed (2: No such file or directory), client: ~~~, server: Elastic IP名, request: "GET /assets/application-796485acc5c1b3047846fd111ee629a32c9e3776a00951b710b65463d118fa3f.css HTTP/1.1", host: "the-expenses.work", referrer: "http://the-expenses.work/users/sign_in"
/etc/nginx/conf.d/rails.conf upstream app_server { # Unicornと連携させるための設定 server unix:/var/www/The-Expenses-95/shared/tmp/sockets/unicorn.sock; } # {}で囲った部分をブロックと呼ぶ。サーバの設定ができる server { # このプログラムが接続を受け付けるポート番号 listen 80; # 接続を受け付けるリクエストURL ここに書いていないURLではアクセスできない server_name ElasticIP番号 the-expenses.work; # クライアントからアップロードされてくるファイルの容量の上限を2ギガに設定。デフォルトは1メガなので大きめにしておく client_max_body_size 2g; # 接続が来た際のrootディレクトリ root /var/www/The-Expenses-95/current/public; # assetsファイル(CSSやJavaScriptのファイルなど)にアクセスが来た際に適用される設定 location ^~ /assets/ { gzip_static on; expires max; add_header Cache-Control public; root /var/www/アプリケーション名/current/public; } try_files $uri/index.html $uri @unicorn; location @unicorn { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; proxy_pass http://app_server; } error_page 500 502 503 504 /500.html; }

参考記事

以下の記事を参考にドメインを取得しました。
https://qiita.com/kono-hiroki/items/154e3ff96f7f63dc62cf

どなたかご教授いただけると幸いです。。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yu_1985

2021/04/17 13:25

これだけだと何もわからないので、どのような構成かの説明を追記の上なにか現状の設定を貼ってください。 - 現状のアプリケーション・インフラ構成 Capistranoを使っているのでおそらくRailsだろうと思いますが、想像でしかないのでわかりません 何かミドルウェアや関連ツール(きっとnginxやunicornまたはpumaあたり)の設定があればそれも貼ってください。 - 該当のサイトにアクセスしたときに開発者ツール(F12)で見てみて、css読み込みにどのようなエラーがでているか - Capistranoのデプロイで何を実行しているか deploy.rbなどCapistrano周りの設定ファイルを貼ってください
branchpeach

2021/04/17 16:12

すみません。情報不足でした。 よろしくお願いします。
AbeTakashi

2021/04/17 16:16

まずはWEBブラウザのソースを見て、CSSのURLを直接確認して、そのURLにアクセスしてみたらどうなりますか? この手の不具合の多くはFQDNやパスが微妙に間違っていたり、httpとhttpsが間違っていたりとか、その手のやつですよ。 それでも分からなければサーバのログも確認してCSSのアクセスが来ているかどうか、来ているならどう返しているか(404なのか503なのか)とか、その辺もチェックしたらいいと思います。
branchpeach

2021/04/17 16:28

ご回答ありがとうございます。 エラーログを見てみたのですが、原因がわかりませんでした。。。 追加で添付しております。 よろしくお願いします。
branchpeach

2021/04/17 16:31

コンソールのエラー画像も追加いたしました。
AbeTakashi

2021/04/17 16:51

404のログですがこれはWEBブラウザ側のログですよね? サーバ側にもログは出ていますか? まずはここが切り分けポイントで、サーバ側にログが来てないのであれば、httpとhttpsが間違ってるとか、FQDNが間違っているとかそっち方面を疑うべきでしょう。サーバ側にも同じようにNot Foundのログが出ているのであれば、404にならないように諸々の設定を変えるしかないと思います。デプロイはどうなっているのか? application-xxxx.cssというファイルがどこに配置されていていて、WEBサーバのドキュメントルートがどうなっているか?などをチェックして間違いを探すところから始めるべきかと。この辺の情報まで質問文に追記して頂ければ、原因を的確にアドバイスできる人が現れるかもしれませんが、現状だと404だけでは的確なアドバイスが来るのは期待薄な気もします。
branchpeach

2021/04/17 17:07

ご回答ありがとうございます。 すみません。初歩的なことなのですが、サーバーサイドのエラーログの探し方がわからなくて。。 調べてみたのですが、出てこなくて。 教えていただけませんか?
branchpeach

2021/04/17 17:18

sudo less /var/log/nginx/error.log  このコマンドをターミナルで入力し、エラーログが出てきたので追加で添付しております。 よろしくお願いします。
AbeTakashi

2021/04/19 13:11

サーバ側にアクセスログがあるのであれば、原因は多少は絞らせそうですね。 /var/www/アプリケーション名/current/public/assets/application-796485acc5c1b3047846fd111ee629a32c9e3776a00951b710b65463d118fa3f.css は存在しないんですよね? ですが、クライアント側としては存在しているものとしてアクセスが発生しているはずです。application-796485acc5c1b3047846fd111ee629a32c9e3776a00951b710b65463d118fa3f.css はサーバ上のどこにありますでしょうか? このファイルが違うディレクトリに存在するのであれば、Nginxの設定などを見直す必要がありそうです。 ただ、気になるのはクライアントのログとのファイル名が違うことです。なんかファイル名がもっと短いですよね・・・ 少なくともクライアントがあると思ってアクセスしているCSSファイルがサーバ上に存在しないのであれば、なぜこれが起こっているのかの原因をつかまないといけなさそうです。CSSファイルを生成する過程で何かしらミスが発生していそうな気もします。Rubyのフレームワークか何かでCSSファイルを生成しているのであれば、そちらが原因じゃないでしょうか?
guest

回答1

0

自己解決

Nginxのファイルのアプリ名の小文字と大文字を間違えておりました。

投稿2021/04/23 04:11

branchpeach

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問