Capistrano自動デプロイ時の502エラー
ruby on rails初学者です。
手動デプロイ、Nginxの設定は済んでいますが、Capistranoで自動デプロイを実行したところ、502 Bad gatewayのエラーが出て詰まっています。
自動デプロイ後にcurrentディレクトリが作成される認識ですが、エラーログを確認しようとEC2側でcurrentディレクトリに移動しようとすると、no such file or directory: current と表示されてしまいます。
自動デプロイを実行した画面は下記で、デプロイ自体は成功している認識なのですがあってますでしょうか。
発生している問題・エラー
00:53 deploy:assets:backup_manifest
01 mkdir -p /var/www/app_name/releases/20210502224248/assets_manifest_backup
✔ 01 ec2-user@xx.xxx.xxx.xxx 0.123s
02 cp /var/www/app_name/releases/20210502224248/public/assets/.sprockets-manifest-d9815ef5061edc1f5133a83421dafb39.json /var/www/app_name/releases/20210502224248/assets_manifest_backup
✔ 02 ec2-user@xx.xxx.xxx.xxx 0.129s
00:54 deploy:migrate
[deploy:migrate] Run `rake db:migrate`
00:54 deploy:migrating
01 $HOME/.rbenv/bin/rbenv exec bundle exec rake db:migrate
✔ 01 ec2-user@xx.xxx.xxx.xxx 1.811s
00:56 deploy:symlink:release
01 ln -s /var/www/app_name/releases/20210502224248 /var/www/app_name/releases/current
✔ 01 ec2-user@xx.xxx.xxx.xxx 0.139s
02 mv /var/www/app_name/releases/current /var/www/app_name
✔ 02 ec2-user@xx.xxx.xxx.xxx 0.128s
00:56 unicorn:start
01 $HOME/.rbenv/bin/rbenv exec bundle exec unicorn -c /var/www/app_name/current/config/unicorn.rb -E deployment -D
✔ 01 ec2-user@xx.xxx.xxx.xxx 1.628s
unicorn restarting...
02 kill -s USR2 `cat /var/www/app_name/shared/tmp/pids/unicorn.pid`
✔ 02 ec2-user@xx.xxx.xxx.xxx 0.132s
00:58 deploy:cleanup
Keeping 5 of 6 deployed releases on xx.xxx.xxx.xxx
01 rm -rf /var/www/app_name/releases/20210501125235
✔ 01 ec2-user@xx.xxx.xxx.xxx 1.367s
01:00 deploy:log_revision
01 echo "Branch master (at f36ae5f5de6da628e4f4d3f84ba5994fc505539a) deployed as release 20210502224248 by user" >> /var/www/app_name/revisions.log
✔ 01 ec2-user@xx.xxx.xxx.xxx 0.126s
config/unicorn.rbとNginxのファイルの設定は下記です。
config/unicorn.rb
app_path = File.expand_path('../../../', __FILE__)
worker_processes 1
working_directory "#{app_path}/current"
pid "#{app_path}/shared/tmp/pids/unicorn.pid"
listen "#{app_path}/shared/tmp/sockets/unicorn.sock"
stderr_path "#{app_path}/shared/log/unicorn.stderr.log"
stdout_path "#{app_path}/shared/log/unicorn.stdout.log"
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
upstream app_server {
server unix:/var/www/app_name/shared/tmp/sockets/unicorn.sock;
}
server {
listen 80;
server_name xx.xxx.xxx.xxx;
client_max_body_size 2g;
root /var/www/app_name/current/public;
# assetsファイル(CSSやJavaScriptのファイルなど)にアクセスが来た際に適用される設定
location ^~ /assets/ {
gzip_static on;
expires max;
add_header Cache-Control public;
root /var/www/app_name/current/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;
}
理解不足な点があるかと思いますが、どなたかご教示いただけますと幸いです。