🦁

Capistranoで自動デプロイの設定を行う際に遭遇したエラーまとめ

2022/03/30に公開

はじめに

実務未経験の時に独学でポートフォリオを作成していたのですが、Capistranoを使用する過程で色々とハマった部分があったのでこの記事にまとめます。

自動デプロイを実行すると、No space left on deviceと言われた

状況

bundle exec cap production deployというコマンドを叩き、自動デプロイを実行しようとすると、No space left on device
というエラーが出て、途中で止まってしまった。

対処法

まず、以下の記事を参考に対処法を探った。
No space left on device とエラーが出るときの対処法
Linux

teminal
$ df -i 
ファイルシス   Iノード  I使用  I残り I使用% マウント位置
devtmpfs        121370    281 121089     1% /dev
tmpfs           125870      2 125868     1% /dev/shm
tmpfs           125870    363 125507     1% /run
tmpfs           125870     16 125854     1% /sys/fs/cgroup
/dev/xvda1      424720 424576    144   100% /
tmpfs           125870      1 125869     1% /run/user/1001

どうやら、/dev/xvda1 ディレクトリナイがいっぱいになっている模様。
このコマンドを叩いて、ファイル数とたくさん消費しているディレクトリを探せば良いそうだ。

terminal
$ find /var/log/ -type f -name \* -exec cp -f /dev/null {} \;

これでログを消すと,

terminal
[takuya@ip-10-0-1-173 ~]$ df -i
ファイルシス   Iノード  I使用  I残り I使用% マウント位置
devtmpfs        121370    281 121089     1% /dev
tmpfs           125870      2 125868     1% /dev/shm
tmpfs           125870    343 125527     1% /run
tmpfs           125870     16 125854     1% /sys/fs/cgroup
/dev/xvda1      596360 424567 171793    72% /
tmpfs           125870      1 125869     1% /run/user/1001

容量が空いて、無事解決。

releasesがいっぱいになるときの対処法

以下のコードを追記すれば良いみたい。

config/deploy.rb
   set :keep_releases, 5
 + after "deploy:restart", "deploy:cleanup"

参考記事

Rails deployment to Amazon EC2 - No space left on device

bundle exec cap production deployを実行した時のエラーについて

何が起こったか?

capistranoを設定して、bundle exec cap production deployを実行して自動デプロイを行おうとしたところ以下のようなエラーに遭遇した。

terminal
OpenSSH keys only supported 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)

対処法

以下のgemを追加して、buinle installすると解決した。

Gemfile
group :development, :test do
  # Call 'byebug' anywhere in the code to stop execution and get a debugger console
  gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
  gem 'rspec-rails', '~> 3.6'
  gem 'capistrano'
  gem 'capistrano-bundler'
  gem 'capistrano-rails'
  gem 'capistrano-rbenv'
  
  + gem 'ed25519'
  + gem 'bcrypt_pbkdf'
end

Discussion