capistranoでデプロイを自動化させようと試していた際に、EC2を再起動したところエラーが表示されました。
cat log/nginx.error.log
2020/05/07 14:00:08 [crit] 3629#0: *2 pwritev() "/var/lib/nginx/tmp/proxy/1/00/0000000001" failed (28: No space left on device) while reading upstream, client: 121.3.47.42, server: 13.115.179.212, request: "GET /assets/application-147cfe69dba92e16c1d4275578eb1221ba9e6dd28140f02fd5d759e2e49bc49a.js HTTP/1.1", upstream: "http://unix:/var/www/rails/Portfolio/tmp/sockets/unicorn.sock:/assets/application-147cfe69dba92e16c1d4275578eb1221ba9e6dd28140f02fd5d759e2e49bc49a.js", host: "13.115.179.212", referrer: "http://13.115.179.212/"
EC2にログインした際も
ヒアドキュメント用一時ファイルを作成できません: No space left on device
と表示された。
unicorn_rails -c /var/www/rails/Portfolio/config/unicorn.conf.rb -D -E
を入力する際にも同じようなエラーがでます。
##原因
capistranoのを使ったデプロイの自動化を試していて、失敗を繰り返しEC2内の容量が限界になってしまった可能性。
コマンドを調べつつ、下記のように表示された。
[shogo@ip-10-0-0-193 Portfolio]$ df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
devtmpfs 475M 0 475M 0% /dev
tmpfs 492M 4.0K 492M 1% /dev/shm
tmpfs 492M 19M 473M 4% /run
tmpfs 492M 0 492M 0% /sys/fs/cgroup
/dev/xvda1 8.0G 8.0G 20K 100% /
tmpfs 99M 0 99M 0% /run/user/1001
[shogo@ip-10-0-0-193 Portfolio]$ df -i
ファイルシス Iノード I使用 I残り I使用% マウント位置
devtmpfs 121367 281 121086 1% /dev
tmpfs 125870 3 125867 1% /dev/shm
tmpfs 125870 356 125514 1% /run
tmpfs 125870 16 125854 1% /sys/fs/cgroup
/dev/xvda1 247976 247907 69 100% /
tmpfs 125870 1 125869 1% /run/user/1001
[shogo@ip-10-0-0-193 Portfolio]$ sudo find . -xdev -type f | cut -d "/" -f 2 | sort | uniq -c | sort -n
1 .browserslistrc
1 .env
1 .gitignore
1 .rspec
1 Dockerfile
1 Gemfile
1 Gemfile.lock
1 Guardfile
1 Procfile
1 README.md
1 Rakefile
1 babel.config.js
1 config.ru
1 docker-compose.yml
1 entrypoint.sh
1 package.json
1 postcss.config.js
1 storage
1 yarn.lock
2 lib
6 log
7 bin
8 .idea
24 .git
27 db
36 test
40 spec
47 config
130 mysql-datavolume
136 app
186 repo
952 pgsql-data
1979 public
4933 tmp
13042 vendor
43275 releases
releasesはcapistranoでデプロイする際に作成されるファイルなので、消して良い。
[shogo@ip-10-0-0-193 Portfolio]$ rm -rf releases
で、一度EC2をログアウトしてもう一度EC2にログイン。
エラーは出ない。
そして本番環境にデプロイできました。
その後capistranoを使ったデプロイを試していたのですがec2内にsettings.ymlがないと言われたので下記記事を参考にして修正しました。
https://qiita.com/hibriiiiidge/items/9ab230b69454f0c662bb
したがってその後同じ状況になり、releasesを削除したら動きました。releaseだけ削除で良さそう。