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; }
回答2件
あなたの回答
tips
プレビュー