質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

Q&A

解決済

1回答

1268閲覧

EC2に紐付けたElasticIPアドレスでリクエストを送ったら404エラーが返る

oeiqgfodgfhps

総合スコア35

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

0グッド

0クリップ

投稿2021/07/15 08:29

編集2021/07/16 07:38

railsをEC2+Docker環境にデプロイしています。
一通り環境ができて、ElasticIPアドレスでアクセスしてみたのですが、404エラーが返ってきています。
ログの方にはリクエストした際に下記のようなメッセージが出ているので、リクエストはきちんと届いていそうなのですが、なぜ404エラーが返ってきてしまうのでしょうか?

[15/Jul/2021:08:26:04 +0000] "GET / HTTP/1.1" 404 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36"

下記が404エラーのページです。

イメージ説明

docker-compose

version: '3' services: app: build: context: . entrypoint: bundle exec puma -C config/puma.rb -e production volumes: - .:/saving - public-data:/saving/public - tmp-data:/saving/tmp - log-data:/saving/log networks: - saving-network web: build: context: ./nginx_docker volumes: - public-data:/saving/public - tmp-data:/saving/tmp ports: - 80:80 depends_on: - app networks: - saving-network volumes: public-data: tmp-data: log-data: db-data: networks: saving-network: external: true

nginx.conf

upstream saving { server unix:///saving/tmp/sockets/puma.sock; } server { listen 80; server_name 35.74.55.100; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; root /saving/public; client_max_body_size 100m; error_page 404 /404.html; error_page 505 502 503 504 /500.html; try_files $uri/index.html $uri @saving; keepalive_timeout 5; location @saving { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_pass http://saving; } }

railsのエラーログ

I, [2021-07-16T07:35:06.756202 #1] INFO -- : [dba872fa-ea06-492c-86e7-c085d25ae80e] Started GET "/" for 118.105.181.146 at 2021-07-16 07:35:06 +0000 F, [2021-07-16T07:35:06.756598 #1] FATAL -- : [dba872fa-ea06-492c-86e7-c085d25ae80e] [dba872fa-ea06-492c-86e7-c085d25ae80e] ActionController::RoutingError (No route matches [GET] "/"):

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2021/07/15 08:33

Webサーバは何を使って、どのように構築しましたか?
oeiqgfodgfhps

2021/07/15 08:35

webサーバーはnginxを使用しました。 docker-composeを使って環境を作っています。 docker-composeのコードを追記しました。
odataiki

2021/07/15 15:09 編集

プログラムの前に環境の問題、 AWSでよくあるのがSecurityGroupの設定が厳しすぎるというのがあります。 今回の場合ですとOutBoundのSecurityGroupで止められていることはありませんか? 可能な範囲で情報開示すると解決の近道と思われます。
oeiqgfodgfhps

2021/07/15 15:30

アウトバウンドのセキュリティグループはIPバージョンがIPv4、プロトコルやportrangeは全てでdestinationに0.0.0.0/0を指定しております。 厳しすぎるというわけではないのでそこが問題ではないと思うのですが、インバウンドの方もみた方がいいですか?
odataiki

2021/07/15 23:26

アウトバウンドは問題なさそうですね。 リクエスト時のログが届いているのであればインバウンドも大丈夫と思います。 取り急ぎ
AbeTakashi

2021/07/16 05:30

nginxのアクセスログではなくてエラーログはどうなってるでしょう? 404の理由が書いてある場合があります。
oeiqgfodgfhps

2021/07/16 05:33

nginxのエラーログはどのようにしてみれるのでしょうか?? 無知なものですみません、、
AbeTakashi

2021/07/16 05:45

コンテナの中の/var/log/nginx/error.logを参照すればいいです。コンテナの中に入っても良いですし、ログをVolumeでマウントしてホストから直接見ることもできます。書くと長くなるので詳しくはDocker関連のドキュメントを参照してください。
oeiqgfodgfhps

2021/07/16 05:50

コンテナの中にnginxディレクトリがありませんでした。
AbeTakashi

2021/07/16 06:14

そのディレクトリが存在しないならnginx.confで書いてあることが反映されてないってことでしょうか? 反映されてたらエラーでnginxが起動しないはずです。この状況から見てもそのディレクトリがないということはないと思うんですけどね。nginxは別コンテナになってますが、ちゃんとそっちを見に行ってますかね?
oeiqgfodgfhps

2021/07/16 06:33

nginxのコンテナ見にいけてませんでした! 今見にいって、catコマンドでエラー内容を確認しようと思ったのですが、入力待ち状態になり、見ることができませんでした。この状態が何か影響しているんでしょうか?
AbeTakashi

2021/07/16 06:44

catコマンドで入力状態になるというのは正直なところよく分かりません。まずはちゃんとコンテナの中に入れてますか? docker exec -it nginxのコンテナ名 /bin/bash でnginxのコンテナに入り、その中で tail -500f /var/log/nginx/error.log とやればエラーログが見れると思うのですが。まったくログが出てないのであればnginxでは404を返してなく、もっと手前で404を返してる可能性があります。こういう場合は切り分けをしていって、徐々に捜索範囲を狭めることが大事です。
oeiqgfodgfhps

2021/07/16 06:56

おっしゃられた通りにコマンドを打ってみましたが、何も出ていませんでしたので、nginxが出しているエラーではないということですかね。そうするとawsの方を探ってみたほうがいいですか??
oeiqgfodgfhps

2021/07/16 07:00

今思ったのですが、docker-compose内のvolumeのところでログのマウントを行っていないようですが、そのせいでログが書き込まれていないということはありますか??
AbeTakashi

2021/07/16 07:06

それでログが書き込まれてないということはない気と思います。なので、Rails側で404返してるんですかね。Rails側のコンテナでほぼ同様の手順で /saving/log を参照すれば、通常はエラー内容が書かれているとおもうのですが、こちらのログはアプリケーションの設定にもよるので詳細なログが出てない可能性もあります。その場合は、アプリケーション側でログを吐き出すような設定を入れる必要があります。Railsには明るくないのでこれ以上アドバイスはできませんが、Noinさんのアドバイスと合わせて頑張って原因を探してください。
oeiqgfodgfhps

2021/07/16 07:36

ご回答ありがとうございます。railsの方でエラーログの収集ができました。ルートのroutingエラーが原因だったみたいです。 しかしなぜrailsのエラー画面が表示されないのでしょうか。。?
AbeTakashi

2021/07/16 07:42

なるほど、原因が分かって良かったです。たしかにRails側の404であればそんな素っ気ない画面ではなくカスタムエラー画面みたいのが出ても良さそうですが、Railsにはまったく明るくないので私には分かりません(レスポンスコードが404だとWEBブラウザ側で問答無用でそういう画面を出してる可能性もありますが)。お力になれず申し訳ありません。
guest

回答1

0

ベストアンサー

webからappへの渡し方が質問内容からは見えないので憶測ですが、
これを入れてみるとどうでしょう?

services: web: links: - app

投稿2021/07/16 01:40

Noin

総合スコア188

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

oeiqgfodgfhps

2021/07/16 04:03

appへのリンク入れてみましたが、状況改善しませんでした。
Noin

2021/07/16 04:33

linksが入っているのであれば通信自体は飛ばそうとしてるはずです。 エラーは404のままですか? rails側のログは出ていますか? nginxとrails側の設定はどうなっていますか?
oeiqgfodgfhps

2021/07/16 05:23

すみません。rails側のログの見方がわかりませんので教えていただけると幸いです。 nginxの設定あげておきます。
oeiqgfodgfhps

2021/07/16 07:37

railsのログを出力することができました。 ``` I, [2021-07-16T07:35:06.756202 #1] INFO -- : [dba872fa-ea06-492c-86e7-c085d25ae80e] Started GET "/" for 118.105.181.146 at 2021-07-16 07:35:06 +0000 F, [2021-07-16T07:35:06.756598 #1] FATAL -- : [dba872fa-ea06-492c-86e7-c085d25ae80e] [dba872fa-ea06-492c-86e7-c085d25ae80e] ActionController::RoutingError (No route matches [GET] "/"): ``` このようなエラーが出ておりました
Noin

2021/07/16 09:10

アクセスはできたようですね。 後はrails側のルーティングです。 GET /でアクセスできるコンテンツがないといわれてますね。 https://qiita.com/makoto15/items/88fde979fac6c4686680 ちょっとここからは専門外なので、railsマンの方々お願いします。
oeiqgfodgfhps

2021/07/21 08:33

ルーティングを修正したらきちんと起動しました。ありがとうございました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問