解決したいこと
unicornを起動しようとしたのですが、エラーで前に進めないのを解消したいです。
(一度は正常に動いていましたが、killコマンドをしたせいでおかしくなっています。)
環境
ruby '2.6.5'
rails '6.0.0'
発生している問題・エラーメッセージ
実行したコマンド
RAILS_SERVE_STATIC_FILES=1 unicorn_rails -c config/unicorn.rb -E production -D
エラーメッセージ
master failed to start, check stderr log for details
該当のソースコード less log/unicorn.stderr.log
I, [2021-10-14T00:57:26.301520 #431] INFO -- : Refreshing Gem list I, [2021-10-14T00:57:27.823053 #431] INFO -- : unlinking existing socket=/var/www/road/tmp/sockets/unicorn.sock I, [2021-10-14T00:57:27.823329 #431] INFO -- : listening on addr=/var/www/road/tmp/sockets/unicorn.sock fd=8 F, [2021-10-14T00:57:27.823410 #431] FATAL -- : error adding listener addr=["/var/www/road/tmp/sockets/unicorn.sock", [...]] bundler: failed to load command: unicorn_rails (/home/ec2-user/.rbenv/versions/2.6.5/bin/unicorn_rails) NoMethodError: undefined method `autoclose=' for ["/var/www/road/tmp/sockets/unicorn.sock", [...]]:Array /home/ec2-user/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/unicorn-5.4.1/lib/unicorn/http_server.rb:243:in `listen' /home/ec2-user/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/unicorn-5.4.1/lib/unicorn/http_server.rb:851:in `block in bind_new_listeners!' /home/ec2-user/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/unicorn-5.4.1/lib/unicorn/http_server.rb:851:in `each' /home/ec2-user/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/unicorn-5.4.1/lib/unicorn/http_server.rb:851:in `bind_new_listeners!' /home/ec2-user/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/unicorn-5.4.1/lib/unicorn/http_server.rb:140:in `start' /home/ec2-user/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/unicorn-5.4.1/bin/unicorn_rails:209:in `<top (required)>' /home/ec2-user/.rbenv/versions/2.6.5/bin/unicorn_rails:23:in `load' /home/ec2-user/.rbenv/versions/2.6.5/bin/unicorn_rails:23:in `<top (required)>'
config/unicorn.rb
#サーバ上でのアプリケーションコードが設置されているディレクトリを変数に入れておく app_path = File.expand_path('../../', __FILE__) #アプリケーションサーバの性能を決定する worker_processes 1 #アプリケーションの設置されているディレクトリを指定 working_directory app_path #Unicornの起動に必要なファイルの設置場所を指定 pid "#{app_path}/tmp/pids/unicorn.pid" #ポート番号を指定 listen 3000 #エラーのログを記録するファイルを指定 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
gemfile(一部抜粋)
group :production do gem 'unicorn', '5.4.1' gem 'pg' end
あなたの回答
tips
プレビュー