前提・実現したいこと
AWSのEC2サーバーにおいて環境設定を行った後、bundle exec unicorn_rails -c config/unicorn.rb -E production -Dを行ったところ
該当のページにアクセスすると
We're sorry, but something went wrong.エラーが発生しておりページが正しく表示されない状況です。こちらの問題を解決したいです。
発生している問題・エラーメッセージ
less log/unicorn.stderr.logでログを確認したところ下記のエラーを発見しました。
ArgumentError: Already running on PID:7760 (or pid=/var/www/kiawase/tmp/pids/unicorn.pid is stale) /home/ec2-user/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/unicorn-5.4.1/lib/unicorn/http_server.rb:205:in `pid='
ps aux | grep unicornを使ってプロセスを確認しmasterのプロセス、他のプロセスをkillしても同じエラーが出てしまう状況です。
該当のソースコード
unicorn.rbの記述です
ruby
1app_path = File.expand_path('../../', __FILE__) 2 3worker_processes 1 4 5working_directory app_path 6 7pid "#{app_path}/tmp/pids/unicorn.pid" 8 9listen 3000 10 11stderr_path "#{app_path}/log/unicorn.stderr.log" 12 13stdout_path "#{app_path}/log/unicorn.stdout.log" 14 15timeout 60 16 17 18preload_app true 19GC.respond_to?(:copy_on_write_friendly=) && GC.copy_on_write_friendly = true 20 21check_client_connection false 22 23run_once = true 24 25before_fork do |server, worker| 26 defined?(ActiveRecord::Base) && 27 ActiveRecord::Base.connection.disconnect! 28 29 if run_once 30 run_once = false # prevent from firing again 31 end 32 33 old_pid = "#{server.config[:pid]}.oldbin" 34 if File.exist?(old_pid) && server.pid != old_pid 35 begin 36 sig = (worker.nr + 1) >= server.worker_processes ? :QUIT : :TTOU 37 Process.kill(sig, File.read(old_pid).to_i) 38 rescue Errno::ENOENT, Errno::ESRCH => e 39 logger.error e 40 end 41 end 42end 43 44after_fork do |_server, _worker| 45 defined?(ActiveRecord::Base) && ActiveRecord::Base.establish_connection 46end
試したこと
urlが誤っていないかの確認
データベースが起動出来ているか確認
シークレットキーが正しいか確認
unicornのプロセスをkill
最新のコードがpull出来ているかの確認
EC2インスタンスの再起動
補足情報(FW/ツールのバージョンなど)
ruby ver2.5.1
rails ver5.2.4
自分が理解出来ている範囲で出来ることを全て試してみたのですが知見が不足している為、解決に至らず時間だけが過ぎていくような状況です。
解決方法、またはヒント等、ご教授頂けると幸いです。
回答1件
あなたの回答
tips
プレビュー