LoginSignup
0
0

More than 3 years have passed since last update.

[初学者] AWS デプロイ時のエラー解決に役立ちそうなコマンドや知識

Posted at

背景

AWSへのデプロイ時に多くのエラーに悩まされたため、記事にまとめようと思いました。
私と同じような初学者の方の役にたてば嬉しいです!


構成

私自身はRuby on Rails, VPC/EC2(Nginx,Unicorn)/RDS(PostgreSQL)/Route53/ALBを使用してデプロイしました。
デプロイ時に参考にした記事
https://qiita.com/naoki_mochizuki/items/f795fe3e661a3349a7ce
https://qiita.com/Yuki_Nagaoka/items/1f0b814e52e603613556


共通

psコマンドを使用することでプロセスを確認することができます。
psコマンドについて参考にした記事
https://eng-entrance.com/linux-command-ps

$ ps -x            #現在実行中のプロセスを確認するコマンド

アプリケーション関連

デプロイ先のアプリケーションでwe're sorry, but something went wrong.と表示されてしまった場合。アプリに問題があるか確認します

サーバー環境 /var/www/rails/アプリ名
$ cd log
$ tail -n 30 production.log

エラーの記載があるとアプリケーションに問題があります。特にエラーの記載がなければ、Webサーバーの設定に問題があり、正常にデプロイできていない可能性が高いです。


nginx関連

・nginxが起動しているか確認

サーバー環境
$ sudo systemctl status nginx

Active: active (running) と表示されていれば起動しています。

・再起動コマンド

サーバー環境
$ sudo service nginx restart

・nginxのファイルにエラーがあるか確認

サーバー環境
$ sudo nginx -t

エラーがある場合はエラー箇所を教えてくれる便利なコマンドです。特にnginxのファイルに問題がなければこのように表示されると思います。
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful


Unicorn関連

Unicornのログを確認するコマンド。
よくあるエラーとしては、不要なプロセスが残っている場合に発生する Already running on PID:(プロセス番号)が挙げられると思います。

サーバー環境/アプリのディレクトリ
$ cat log/unicorn.log -n

Unicornのプロセスの確認コマンド

サーバー環境
$ ps -ef | grep unicorn | grep -v grep

Unicornのプロセスを終了するコマンド
Already running on PID:(プロセス番号)のエラーが発生した際は、こちらのコマンドで不要なプロセスを消すことでエラーが解決すると思います。

サーバー環境
$ kill (プロセス番号)

PostgreSQL関連

PostgreSQLが起動しているか確認するコマンド
Active: active (running)となっていれば起動しています。

サーバー環境
$ systemctl status postgresql.service

PostgreSQLを起動させる

サーバー環境
$ sudo systemctl enable postgresql
$ sudo systemctl start postgresql

その他

GoogleChrome, http関連

GoogleChromeでデプロイしたアプリケーションにアクセスすると、強制的にhttps(https化未実施の時)にアクセスして、アプリケーションが開きませんでした。
解決策は、Chromeの履歴→閲覧履歴データの削除→キャッシュされた画像とファイルにチェックを入れ、履歴データを削除することでした。

下記のコマンドでレスポンスを確認することができます。
webサーバのファイルにエラーもなく、curlコマンドでレスポンスがしっかりと返って来るのに、httpsにリダイレクトしてしまう場合は、この問題の可能性もあります。

$ curl http://example.com   #http://example.com はアプリのドメイン。

また、httpで接続する場合は
config.force_ssl = falseにしておく必要があります。

config/environment/production.rb
$ config.force_ssl = false 

https化

当初はWebサーバーのファイルを編集することで、https化をしようと考えましたが、AWSのALBというサービスを使用する方がhttps化は容易であると知ったため、ALBを使用しました。初学者の方でhttps化に手こずっている方は、ALBを使用するのが個人的におすすめかなと思います。
ALBを使用することで、httpリクエストをhttpsにリダイレクトすることができます。

[htttps化の参考にした記事]
https://aws.amazon.com/jp/premiumsupport/knowledge-center/elb-redirect-http-to-https-using-alb/
https://dev.classmethod.jp/articles/alb-redirects/
この他にも「ALB https リダイレクト」と検索すると参考になる記事がたくさん出てきます!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0