🦁
Capistranoで自動デプロイの設定を行う際に遭遇したエラーまとめ
はじめに
実務未経験の時に独学でポートフォリオを作成していたのですが、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