前提・実現したいこと
就活終了に伴って停止させていたEC2インスタンスを、転職活動用のポートフォリオ復活のために再起動したらサイトの方が見れなくなりました。
そのため、ポートフォリオのWEBアプリを再度デプロイしなおそうとしています。
現在EC2インスタンスを作り直し、nginxとMYsqlを導入し直し、
unicorn_railsを起動し直そうとした時点でエラーが発生しました。
発生している問題・エラーメッセージ
エラーメッセージと使用したコマンド。 $RAILS_SERVE_STATIC_FILES=1 unicorn_rails -c config/unicorn.rb Traceback (most recent call last): 10: from /home/ec2-user/.rbenv/versions/2.5.1/bin/unicorn_rails:23:in `<main>' 9: from /home/ec2-user/.rbenv/versions/2.5.1/bin/unicorn_rails:23:in `load’ 8: from /home/ec2-user/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/unicorn-5.4.1/bin/unicorn_rails:209:in `<top (required)>' 7: from /home/ec2-user/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/unicorn-5.4.1/bin/unicorn_rails:209:in `new’ 6: from /home/ec2-user/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/unicorn-5.4.1/lib/unicorn/http_server.rb:77:in `initialize’ 5: from /home/ec2-user/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/unicorn-5.4.1/lib/unicorn/http_server.rb:77:in `new’ 4: from /home/ec2-user/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/unicorn-5.4.1/lib/unicorn/configurator.rb:77:in `initialize’ 3: from /home/ec2-user/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/unicorn-5.4.1/lib/unicorn/configurator.rb:84:in `reload’ 2: from /home/ec2-user/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/unicorn-5.4.1/lib/unicorn/configurator.rb:84:in `instance_eval’ 1: from config/unicorn.rb:8:in `reload’ /home/ec2-user/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/unicorn-5.4.1/lib/unicorn/configurator.rb:592:in `working_directory’: config_file=config/unicorn.rb would not be accessible in working_directory=/var/www/current/config/unicorn.conf (ArgumentError)
ワーキングディレクトリが違うというエラーが発生しています。
config/unicorn.rb
1 2app_path = File.expand_path('../../../', _FILE_) 3 4worker_processes 1 5 6working_directory "#{app_path}/current" 7 8pid "#{app_path}/shared/tmp/pids/unicorn.pid" 9 10listen "#{app_path}/shared/tmp/sockets/unicorn.sock" 11 12stderr_path "#{app_path}/shared/log/unicorn.stderr.log" 13 14stdout_path "#{app_path}/shared/log/unicorn.stdout.log" 15 16timeout 60 17 18preload_app true 19GC.respond_to?(:copy_on_write_friendly=) && GC.copy_on_write_friendly = true 20check_client_connection false 21run_once = true 22before_fork do |server, worker| 23 defined?(ActiveRecord::Base) && 24 ActiveRecord::Base.connection.disconnect! 25 if run_once 26 run_once = false # prevent from firing again 27 end 28 old_pid = "#{server.config[:pid]}.oldbin" 29 if File.exist?(old_pid) && server.pid != old_pid 30 begin 31 sig = (worker.nr + 1) >= server.worker_processes ? :QUIT : :TTOU 32 Process.kill(sig, File.read(old_pid).to_i) 33 rescue Errno::ENOENT, Errno::ESRCH => e 34 logger.error e 35 end 36 end 37end 38after_fork do |_server, _worker| 39 defined?(ActiveRecord::Base) && ActiveRecord::Base.establish_connection 40end 41
試したこと
unicorn.rbのコードは昔デプロイした時のコードと同じままなので問題ないかと考えました。
ワーキングディレクトリが違っていますというエラーなのですが、これではダメと出てくるかがわかりませんでした。unicorn_railsのコマンドの呼び出し方がダメなのかと思い、いろいろ試しましたがそれでもダメでした。
念の為、ワーキングディレクトリの設定を「working_directory app_path」に変更してもダメでした。
https://teratail.com/questions/229963
私とほぼ同じような症状の方がおり、記事を参考にしましたがうまくいきませんでした。
もし何かわかりそうでしたら、教えていただけると幸いです。
他のunicorn_railsの呼び出し方だとこのようなエラーが発生します。
$bundle exec unicorn_rails -c config/unicorn.rb
bundler: failed to load command: unicorn_rails (/home/ec2-user/.rbenv/versions/2.5.1/bin/unicorn_rails)
ArgumentError: config_file=config/unicorn.rb would not be accessible in working_directory=/var/www/current/config/unicorn.conf
/home/ec2-user/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/unicorn-5.4.1/lib/unicorn/configurator.rb:592:in working_directory' config/unicorn.rb:8:in
reload'
/home/ec2-user/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/unicorn-5.4.1/lib/unicorn/configurator.rb:84:in `instance_eval'
補足情報(FW/ツールのバージョンなど)
ruby 2.5.1
bundle 2.0.2
Rails 5.2.2.1
ここにより詳細な情報を記載してください。