自分がよくデプロイする時に起きるエラーをまとめます。
またそのエラーの解決方法も紹介してきます。
##動作環境
- OS:Mac
- エディタ:VScode
- Ruby2.5.1
- Ruby on Rail:5.2.1
- Git:2.21
##まず最初にやっておくこと
$bundle install
これをやらないと、あるあるデプロイエラー④のエラーが出ることがあるので最初にやっておきましょう。
##あるあるデプロイエラー①
$ bundle exec cap production deploy
##エラー文
upported if ED25519 is available (NotImplementedError)
net-ssh requires the following gems for ed25519 support:
* ed25519 (>= 1.2, < 2.0)
* bcrypt_pbkdf (>= 1.0, < 2.0)
See https://github.com/net-ssh/net-ssh/issues/565 for more information
Gem::LoadError : "ed25519 is not part of the bundle. Add it to your Gemfile."
(Backtrace restricted to imported tasks)
cap aborted!
NotImplementedError: OpenSSH keys only supported if ED25519 is available
net-ssh requires the following gems for ed25519 support:
* ed25519 (>= 1.2, < 2.0)
* bcrypt_pbkdf (>= 1.0, < 2.0)
See https://github.com/net-ssh/net-ssh/issues/565 for more information
Gem::LoadError : "ed25519 is not part of the bundle. Add it to your Gemfile."
Tasks: TOP => rbenv:validate
(See full trace by running task with --trace)
###解決方法
gemfileに"ed25519","bcrypt_pbkdf"に追加する。
# Deployment
group :deployment do
#他のgem
gem 'unicorn'
gem 'ed25519' #追加
gem 'bcrypt_pbkdf' #追加
end
##あるあるデプロイエラー②
$ bundle exec cap production deploy
#エラー文
: Exception while executing on host refoma-web07: git exit status: 128 (SSHKit::Runner::ExecuteError)
git stdout: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
git stderr: Nothing written
(Backtrace restricted to imported tasks)
cap aborted!
SSHKit::Runner::ExecuteError: Exception while executing on host refoma-web07: git exit status: 128
git stdout: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
git stderr: Nothing written
Caused by:
SSHKit::Command::Failed: git exit status: 128
git stdout: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
git stderr: Nothing written
Tasks: TOP => git:check
(See full trace by running task with --trace)
The deploy has failed with an error: Exception while executing on host refoma-web07: git exit status: 128
git stdout: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
git stderr: Nothing written
INFO Notifying Slack of deploy failed
###解決策
localの自分のアプリのディレクトリで以下のコマンドを実行する
ssh-add ~/.ssh/id_rsa <ーこの鍵はGithubのssh接続で使ってるやつ
最初からつながってない方はconfig/deploy.rbの設定を見てください。
##あるあるデプロイエラー③
$ bundle install
##エラー文
Could not find fog-vsphere-3.2.3 in any of the sources
そもそもbundle install
できない。
###解決策
Gemfile.lock で指定されているgemのバージョンがyank(削除)されてしまっているため。
対象のgemをupdateする。
$ bundle update fog-vsphere
$ bundle exec cap production deploy
##エラー文
bundler: failed to load command: cap(/Users/tanaka/Desktop/GitHub/web-app/vendor/bundle/ruby/2.5.0/bin/cap))
うまくいったと思ったらエラー。
非常に不愉快。
###解決方法
$ bundle install
bundle exec cap production deploy
をする前に、bundle install
をしないとおこるので、事前にbundle install
をしておきましょう。
##あるあるデプロイエラー⑤
エラーがでないで途中で止まる ##目安:10分以上
サーバーとやりとり中に通信が遮断されると起きる
###解決策
Control + c ##強制終了
待つのが面倒く際ので、実行を終了させてもう一度デプロイしましょう。
##参考文献