EC2サーバーにログインする際のElastic IPがまちがってたので、おそらくそれが原因でした!間違ったインスタンスにログインしてました!
前提・実現したいこと
bundle exec cap production deploy
を実行したら
[Deprecation Notice] Future versions of Capistrano will not load the Git SCM
plugin by default. To silence this deprecation warning, add the following to
your Capfile after require "capistrano/deploy"
:
require "capistrano/scm/git" install_plugin Capistrano::SCM::Git
00:00 rbenv:validate
WARN rbenv: 2.6.5 is not installed or not found in $HOME/.rbenv/versions/2.6.5 on 18.179.97.156
とエラーが出ました。
該当のソースコード
Capfile
require "capistrano/setup" require "capistrano/deploy" require 'capistrano/rbenv' require 'capistrano/bundler' require 'capistrano/rails/assets' require 'capistrano/rails/migrations' require 'capistrano3/unicorn' require 'capistrano/scm/git' Dir.glob("lib/capistrano/tasks/*.rake").each { |r| import r } install_plugin Capistrano::SCM::Git
production.rb
server '18.179.97.156', user: 'ec2-user', roles: %w{app db web}
deploy.rb
# config valid for current version and patch releases of Capistrano lock "3.15.0" set :application, "coffee_passport" set :repo_url, "git@github.com:Harasou21/coffee_passport.git" # バージョンが変わっても共通で参照するディレクトリを指定 set :linked_dirs, fetch(:linked_dirs, []).push('log', 'tmp/pids', 'tmp/cache', 'tmp/sockets', 'vendor/bundle', 'public/system', 'public/uploads') set :rbenv_type, :user set :rbenv_ruby, '2.6.5' #カリキュラム通りに進めた場合、’2.6.5’ です # どの公開鍵を利用してデプロイするか set :ssh_options, auth_methods: ['publickey'], keys: ['~/.ssh/coffee_passport-ssh-key.pem'] # プロセス番号を記載したファイルの場所 set :unicorn_pid, -> { "#{shared_path}/tmp/pids/unicorn.pid" } # Unicornの設定ファイルの場所 set :unicorn_config_path, -> { "#{current_path}/config/unicorn.rb" } set :keep_releases, 5 # デプロイ処理が終わった後、Unicornを再起動するための記述 after 'deploy:publishing', 'deploy:restart' namespace :deploy do task :restart do invoke 'unicorn:restart' end end
unicorn.rb
#サーバ上でのアプリケーションコードが設置されているディレクトリを変数に入れておく app_path = File.expand_path('../../../', __FILE__) # 「../」が一つ増えている #アプリケーションサーバの性能を決定する worker_processes 1 #アプリケーションの設置されているディレクトリを指定 working_directory "#{app_path}/current" # 「current」を指定 #Unicornの起動に必要なファイルの設置場所を指定 pid "#{app_path}/shared/tmp/pids/unicorn.pid" # 「shared」の中を参照するよう変更 #ポート番号を指定 listen "#{app_path}/shared/tmp/sockets/unicorn.sock" # 「shared」の中を参照するよう変更 #エラーのログを記録するファイルを指定 stderr_path "#{app_path}/shared/log/unicorn.stderr.log" # 「shared」の中を参照するよう変更 #通常のログを記録するファイルを指定 stdout_path "#{app_path}/shared/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
試したこと
require "capistrano/scm/git" install_plugin Capistrano::SCM::Git
とエラーがあったので、
Capfileにこれらを記述して、 bundle exec cap production deployを実行したら
エラーが
00:00 rbenv:validate
WARN rbenv: 2.6.5 is not installed or not found in $HOME/.rbenv/versions/2.6.5 on 18.179.97.156
だけになりました。
localとEC2でruby -vを実行したら、2.6.5と表示されました。
cd $HOME/.rbenv/versions/
を実行して
ls
をlocalとEC2で実行したら、
2.6.3と2.6.5が表示されました。
なぜ、どっちも2.6.5と表示されたのに、バージョンが見つからないと言われてるのか分かりません。
あなたの回答
tips
プレビュー