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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

AWS(Amazon Web Services)

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

Q&A

解決済

2回答

1524閲覧

Rails 本番環境でWe're sorry, but something went wrong.の原因が探せない

moai891

総合スコア9

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

AWS(Amazon Web Services)

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

0グッド

0クリップ

投稿2020/07/08 13:54

Rails + unicorn + ngnix + mysqlの本番環境でWe're sorry, but something went wrong.が立ち上げ直後から出るのですが、unicornでエラーログが見えず、原因が追求できません。タイトルのエラーはRailsから出力されると思うのですが、他に考えられるエラーはありますでしょうか?

仮説として、本番環境のmysqlにデータが入っていないことが考えております。

恐れ入りますが、アドバイスお願いします。

ローカル環境でのrootページの出力⇨問題なし
https://gyazo.com/2dc02bda8aa128731cc1abaadaa1a860

本番環境
Railsアプリディレクトリ配下

  • production.log
D, [2020-07-08T13:15:59.436527 #6022] DEBUG -- : (0.2ms) SELECT `schema_migrations`.`version` FROM `schema_migrations` ORDER BY `schema_migrations`.`version` ASC D, [2020-07-08T13:23:49.515316 #3327] DEBUG -- : (5.7ms) SET NAMES utf8mb4, @@SESSION.sql_mode = CONCAT(CONCAT(@@sql_mode, ',STRICT_ALL_TABLES'), ',NO_AUTO_VALUE_ON_ZERO'), @@SESSION.sql_auto_is_null = 0, @@SESSION.wait_timeout = 2147483
  • unicorn.stderr.log
I, [2020-07-08T13:23:46.876955 #3327] INFO -- : Refreshing Gem list I, [2020-07-08T13:23:49.503199 #3327] INFO -- : unlinking existing socket=/var/www/badsuru/tmp/sockets/unicorn.sock I, [2020-07-08T13:23:49.503348 #3327] INFO -- : listening on addr=/var/www/badsuru/tmp/sockets/unicorn.sock fd=9 I, [2020-07-08T13:23:49.517646 #3327] INFO -- : master process ready I, [2020-07-08T13:23:49.523079 #3330] INFO -- : worker=0 ready
  • routes.rb
Rails.application.routes.draw do devise_for :users, controllers: { registrations: 'users/registrations', } devise_scope :user do get 'profiles', to: 'users/registrations#new_profile' post 'profiles', to: 'users/registrations#create_profile' end root 'home#index' # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html end
  • unicorn.rb
#サーバ上でのアプリケーションコードが設置されているディレクトリを変数に入れておく app_path = File.expand_path('../../', __FILE__) #アプリケーションサーバの性能を決定する worker_processes 1 #アプリケーションの設置されているディレクトリを指定 working_directory app_path #Unicornの起動に必要なファイルの設置場所を指定 pid "#{app_path}/tmp/pids/unicorn.pid" #ポート番号を指定 listen "#{app_path}/tmp/sockets/unicorn.sock" #エラーのログを記録するファイルを指定 stderr_path "#{app_path}/log/unicorn.stderr.log" #通常のログを記録するファイルを指定 stdout_path "#{app_path}/log/unicorn.stdout.log" #Railsアプリケーションの応答を待つ上限時間を設定 timeout 60 #以下は応用的な設定なので説明は割愛 preload_app true GC.respond_to?(:copy_on_write_friendly=) && GC.copy_on_write_friendly = true check_client_connection false run_once = true before_fork do |server, worker| defined?(ActiveRecord::Base) && ActiveRecord::Base.connection.disconnect! if run_once run_once = false # prevent from firing again end old_pid = "#{server.config[:pid]}.oldbin" if File.exist?(old_pid) && server.pid != old_pid begin sig = (worker.nr + 1) >= server.worker_processes ? :QUIT : :TTOU Process.kill(sig, File.read(old_pid).to_i) rescue Errno::ENOENT, Errno::ESRCH => e logger.error e end end end after_fork do |_server, _worker| defined?(ActiveRecord::Base) && ActiveRecord::Base.establish_connection end
  • etc/nginx/conf.d/rails.conf(URLとIPアドレスは個人情報保護のため割愛)
upstream app_server { server unix:/var/www/〇〇/shared/tmp/sockets/unicorn.sock; } # {}で囲った部分をブロックと呼ぶ。サーバの設定ができる server { # このプログラムが接続を受け付けるポート番号 listen 80; # 接続を受け付けるリクエストURL ここに書いていないURLではアクセスできない server_name 〇〇; # クライアントからアップロードされてくるファイルの容量の上限を2ギガに設定。デフォルトは1メガなの>で大きめにしておく client_max_body_size 2g; # 接続が来た際のrootディレクトリ root /var/www/〇〇/public; # assetsファイル(CSSやJavaScriptのファイルなど)にアクセスが来た際に適用される設定 location ^~ /assets/ { gzip_static on; expires max; add_header Cache-Control 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; }

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

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

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

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

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

winterboum

2020/07/09 07:45

Rails.rootの log/production.log を見てください
moai891

2020/07/09 16:35 編集

ご回答ありがとうございます。 以下、出力結果です。 Rails.rootが初見で使用方法が間違えていたら申し訳ございません。 lproduciotn.logについてローカル環境と比較すると同様のSQLが実行されているものの、HTML表示のためのログが表示されていませんでした。 よろしくお願いします。 ● コンソール [1] pry(main)> Rails.root => #<Pathname:/var/www/アプリ名> ● production.log D, [2020-07-09T16:27:50.240057 #8927] DEBUG -- : (31.3ms) SET NAMES utf8mb4, @@SESSION.sql_mode = CONCAT(CONCAT(@@sql_mode, ',STRICT_ALL_TABLES'), ',NO_AUTO_VALUE_ON_ZERO'), @@SESSION.sql_auto_is_null = 0, @@SESSION.wait_timeout = 2147483
moai891

2020/07/09 16:37

関係ないかもしれないですが、先ほどの回答をするにあたり、EC2内でrails cでコンソールが立ち上がらないエラーがありました。原因はnode.jsが古いバージョンであり、以下のサイトを参考にして解決しました。 https://qiita.com/shota0701nemoto/items/980c613dfc9be9586792
winterboum

2020/07/09 21:17

logでそこを見てとは言ってません。どこかでエラーということが書かれているはず。500を返すとか。その辺りが必要です。 どこを見てよいかわからないのでしたら、Started から次にStartedまでを載せてください
moai891

2020/07/10 06:47 編集

> どこを見てよいかわからないのでしたら、Started から次にStartedまでを載せてください 勉強不足で誠に申し訳ございません。どのファイルのStartedを掲載すれば良いでしょうか? log/unicorn.stderr.logと、log/production.logは見たのですが、「Started」の文言がありませんでした。 また、Google検証ツールで以下のエラー文は見つけました Failed to load resource: the server responded with a status of 502 (Bad Gateway)
winterboum

2020/07/10 07:25

500でなく502ですか。 ですと unicorn と ngnix の接続ができていないようです
moai891

2020/07/10 15:41 編集

ありがとうございます。502エラーの原因が解決できました。 しかしながら、今度は500エラーが生じました。お心当たりある解決法をご存知でしょうか? /var/log/nginx/error.logの内容 2020/07/10 15:33:10 [error] 2973#0: *1 connect() to unix:/var/www/app_name/tmp/sockets/unicorn.sock failed (111: Connection refused) while connecting to upstream, client: ××××××××××, server: ×××××××××××, request: "GET / HTTP/1.1", upstream: "http://unix:/var/www/app_name/tmp/sockets/unicorn.sock:/", host: "××××××××××"
guest

回答2

0

自己解決しました。

再度rails.confを記述し直し、アセットプリコンパイルをしたら500エラーも解決され、無事トップページが表示されました。ご協力頂き、誠にありがとうございました!!

投稿2020/07/10 16:57

moai891

総合スコア9

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

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

0

自己解決

自己解決しました。

再度rails.confを記述し直し、アセットプリコンパイルをしたら500エラーも解決され、無事トップページが表示されました。ご協力頂き、誠にありがとうございました!!

投稿2020/07/10 16:46

moai891

総合スコア9

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問