はじめに
私は某プログラミングスクールに通う初学者です。
学習を始めて数ヶ月経ちますが、まだまだ考えが足らなかったり、トンチンカンな行動を起こしていると思います。
自分が遭遇したエラーや問題解決をした記録として投稿します。
デプロイ
今日はAWSを使ってデプロイしたときのことを書きたいと思います。
今回デプロイしたアプリケーションは、以前にデプロイしていたにも関わらず、色々あって(長いので割愛します)ブラウザで表示できなくなっていることに気づき、スクールのカリキュラムを見ながら作業を行いました。
EC2内でgit pull origin masterを行ったところ、
From https://github.com/xxxx/アプリ名
* branch master -> FETCH_HEAD
Already up to date.
このように返ってきました。
そのままユニコーン軌道コマンド
bundle exec unicorn_rails -c config/unicorn.rb -E production -D
を実行すると
master failed to start, check stderr log for details
と返ってきました。
less log/production.log
コマンドを実行してエラーを探していきます。
ActionView::Template::Error (The asset "xxxxx.png" is not present in the asset pipeline.
このようなエラーを見つけました。
アセットファイルを正しくコンパイルできていないのが原因のようです。
以下、行なったこと
rails assets:precompile RAILS_ENV=production
ps aux | grep unicorn
psコマンドで現在動いているプロセスの確認をしました。
すると、killされていないプロセスが2つありました。
masterと書いてあるプロセスidをkillします。
kill <確認したunicorn rails masterのプロセスid>
最後にRailsを再起動するコマンドを実行します。
RAILS_SERVE_STATIC_FILES=1 unicorn_rails -c config/unicorn.rb -E production -D
ブラウザ上でアプリケーションを開くと、正常に表示することに成功しました。
エラーが出たときはエラーログを表示するコマンドを実行し、エラー文を見つけ、それに沿って解決策を探す。それができませんでした...
AWSの無料枠
AWSには、12ヶ月間、一定の使用量までは様々なサービスを無料で利用できる」という無料枠があります。
無料期間が終わると、使用量に応じて料金が発生するそうです。
※無料期間内でも、使用量が無料枠を超えると料金が発生します。
例えば、2つ目のアプリケーションをAWSでデプロイする場合、新たにインスタンスを作成しますが、稼働時間による無料枠の使用限度を超えると料金が発生します。
AWSのアカウントを作成してから13ヶ月以上経った場合、インスタンスを起動している状態だと料金が発生するそうです。
2つ目以降のデプロイをしたことがないので、具体的な金額はわからないですが、法外な費用ではないと聞きました。
料金発生を避けるためにできること
- Elastic IPアドレスを解放する
- 紐付いているS3バケットを削除する
- インスタンスを削除する など
終わりに
自分で解決したいのに、調べて実行してを繰り返しているうちにどこまで完了しているのかわからなくなり、メンターさんに教えていただきました。
renderでデプロイをしたこともありますが、AWSは作業工程も多く、難しくて苦手意識を持っています。慣れる日は来るのか...日々学習ですね。
ありがとうございました。