はじめに
プログラミング初心者による備忘録です。
今回はEC2内でrailsサーバーを立ち上げようとした時に発生したエラーと解決できた方法を残します。
問題とエラーメッセージ
EC2内で以下のコマンドを実行。
$ bundle exec unicorn_rails -c config/unicorn.rb -E production -D
すると以下のようなエラーが発生。
Your RubyGems version (3.0.3) has a bug that prevents `required_ruby_version` from working for Bundler. Any scripts that use `gem install bundler` will break as soon as Bundler drops support for your Ruby version. Please upgrade RubyGems to avoid future breakage and silence this warning by running `gem update --system 3.2.3`
bundler: failed to load command: unicorn_rails (/home/ec2-user/.rbenv/versions/2.6.5/bin/unicorn_rails)
Traceback (most recent call last):
25: from /home/ec2-user/.rbenv/versions/2.6.5/bin/bundle:23:in `<main>'
24: from /home/ec2-user/.rbenv/versions/2.6.5/bin/bundle:23:in `load'
23: from /home/ec2-user/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/bundler-2.4.3/exe/bundle:33:in `<top (required)>'
22: from /home/ec2-user/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/bundler-2.4.3/lib/bundler/friendly_errors.rb:117:in `with_friendly_errors'
21: from /home/ec2-user/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/bundler-2.4.3/exe/bundle:45:in `block in <top (required)>'
20: from /home/ec2-user/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/bundler-2.4.3/lib/bundler/cli.rb:28:in `start'
19: from /home/ec2-user/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/bundler-2.4.3/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
18: from /home/ec2-user/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/bundler-2.4.3/lib/bundler/cli.rb:34:in `dispatch'
17: from /home/ec2-user/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/bundler-2.4.3/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
16: from /home/ec2-user/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/bundler-2.4.3/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
15: from /home/ec2-user/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/bundler-2.4.3/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
14: from /home/ec2-user/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/bundler-2.4.3/lib/bundler/cli.rb:491:in `exec'
13: from /home/ec2-user/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/bundler-2.4.3/lib/bundler/cli/exec.rb:23:in `run'
12: from /home/ec2-user/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/bundler-2.4.3/lib/bundler/cli/exec.rb:58:in `kernel_load'
11: from /home/ec2-user/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/bundler-2.4.3/lib/bundler/cli/exec.rb:58:in `load'
10: from /home/ec2-user/.rbenv/versions/2.6.5/bin/unicorn_rails:23:in `<top (required)>'
9: from /home/ec2-user/.rbenv/versions/2.6.5/bin/unicorn_rails:23:in `load'
8: from /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)>'
7: from /home/ec2-user/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/unicorn-5.4.1/bin/unicorn_rails:209:in `new'
6: from /home/ec2-user/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/unicorn-5.4.1/lib/unicorn/http_server.rb:77:in `initialize'
5: from /home/ec2-user/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/unicorn-5.4.1/lib/unicorn/http_server.rb:77:in `new'
4: from /home/ec2-user/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/unicorn-5.4.1/lib/unicorn/configurator.rb:77:in `initialize'
3: from /home/ec2-user/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/unicorn-5.4.1/lib/unicorn/configurator.rb:84:in `reload'
2: from /home/ec2-user/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/unicorn-5.4.1/lib/unicorn/configurator.rb:84:in `instance_eval'
1: from config/unicorn.rb:7:in `reload'
/home/ec2-user/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.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 (ArgumentError)
master failed to start, check stderr log for details
原因
参照サイト様
デプロイ後、unicornの起動時にworking_directoryが参照されない
working_directory': config_file=config/unicorn.rb would not be accessible in working_directory=/var/www/current (ArgumentError)
この部分がエラーの原因を直接教えてくれています。
config_file=config/unicorn.rb
を探しているが
working_directory=/var/www/current
にありませんよ?と言っているわけです。
要するに
/var/www/current/config/unicorn.rb
を探しています。
しかし実際は
/var/www/<アプリ名>/current/config/unicorn.rb
にあります。
なので、このパスを指定している部分を治す必要があります。
解決方法
EC2アプリ内で以下のコマンドを実行
$ vi config/unicorn.rb
config/unicorn.rb
が開かれますので
app_path = File.expand_path('../../../', __FILE__)
を
app_path = File.expand_path('../../', __FILE__)
に修正します。
これでパスの指定は問題ありません。
あとがき
受講スクールの記述を鵜呑みにして自分で考えていませんでした。
反省して、記述する内容はしっかり理解したものを実行していきます。