はじめに
AWS(VPC/EC2/RDS/Routes53)を使用してポートフォリオアプリをデプロイしました。参考にしたQiita記事を貼り付けておきます。
この記事では、上記記事を参考にデプロイした際のエラーについて解決方法を記載します。
開発環境
- Ruby 2.7.2
- Rails 6.1.4
- Docker
- MySQL
- CircleCI(RSpec、Rubocop)
デプロイしたアプリのインフラ構成図
-
参考(デプロイしたポートフォリオのアプリ)↓
エラー内容
yumがアップデートできない
- NginXの設定
sudo yum -y update
を実行したところ、下記エラーコード
- エラーコード
Loaded plugins: priorities, update-motd, upgrade-helper
Could not retrieve mirrorlist http://repo.ap-northeast-1.amazonaws.com/latest/main/mirror.list error was
12: Timeout on http://repo.ap-northeast-1.amazonaws.com/latest/main/mirror.list: (28, 'Connection timed out after 5001 milliseconds')
One of the configured repositories failed (Unknown),
and yum doesn't have enough cached data to continue. At this point the only
safe thing yum can do is fail. There are a few ways to work "fix" this:
1. Contact the upstream for the repository and get them to fix the problem.
2. Reconfigure the baseurl/etc. for the repository, to point to a working
upstream. This is most often useful if you are using a newer
distribution release than is supported by the repository (and the
packages for the previous distribution release still work).
3. Disable the repository, so yum won't use it by default. Yum will then
just ignore the repository until you permanently enable it again or use
--enablerepo for temporary usage:
yum-config-manager --disable <repoid>
4. Configure the failing repository to be skipped, if it is unavailable.
Note that yum will try to contact the repo. when it runs most commands,
so will have to try and fail each time (and thus. yum will be be much
slower). If it is a very temporary problem though, this is often a nice
compromise:
yum-config-manager --save --setopt=<repoid>.skip_if_unavailable=true
Cannot find a valid baseurl for repo: amzn-main/latest
原因
- セキュリティグループのアウトバウンドルールが正しく設定されていなかった。
解決策
- 下記サイトを参考にして、アウトバウンドルールを設定したところ、解決した。
画像が表示されない
原因
-
デプロイ時の画像ファイルの位置は
assets/images
配下になっていた。 -
調べたところ、AWSでは、
assets/images
配下の画像を読み込まない。読み込まれるのは、public/images
配下の画像である、とのこと。
解決策
-
mv assets/images public/images
を実施し、manifest.jsの中身を修正したところ、解決した。
manifest.js
//= link_tree ../../../public/images
//= link_directory ../../javascript/stylesheets .scss
※もし参考にする場合、階層は各自のpublic配置場所に合わせてください。
まとめ
最低限の知識があれば、Qiita記事を参考に何とかAWSでデプロイできる
これからも勉強を続けたいと思います。
参考