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

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

新規登録して質問してみよう
ただいま回答率
85.47%
Ruby on Rails 6

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

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Q&A

1回答

3928閲覧

EC2・nginxを使ったデプロイのエラー/html/404.html" failed (2: No such file or directory)【Rails】

NEMOTOSHOTA

総合スコア32

Ruby on Rails 6

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

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

0グッド

1クリップ

投稿2020/04/26 15:00

http://ec2-IPアドレス.ap-northeast-1.compute.amazonaws.com/にアクセスすると404 Not Foundと表示されます。
http://Ipアドレス/にアクセスするとWe're sorry, but something went wrong.と表示されます。

cat log/nginx.error.logは以下の通りです。

2020/04/26 14:31:09 [error] 14950#0: *3101 open() "/var/www/rails/Portfolio/html/404.html" failed (2: No such file or directory), client: 10.0.1.56, server: _, request: "GET / HTTP/1.1", host: "10.0.0.85" 2020/04/26 14:31:11 [error] 14950#0: *3102 "/var/www/rails/Portfolio/html/index.html" is not found (2: No such file or directory), client: 10.0.0.146, server: _, request: "GET / HTTP/1.1", host: "10.0.0.85" 2020/04/26 14:31:11 [error] 14950#0: *3102 open() "/var/www/rails/Portfolio/html/404.html" failed (2: No such file or directory), client: 10.0.0.146, server: _, request: "GET / HTTP/1.1", host: "10.0.0.85" 2020/04/26 14:31:18 [error] 14950#0: *3103 "/var/www/rails/Portfolio/html/index.html" is not found (2: No such file or directory), client: 10.0.1.195, server: _, request: "GET / HTTP/1.1", host: "10.0.0.85" 2020/04/26 14:31:18 [error] 14950#0: *3103 open() "/var/www/rails/Portfolio/html/404.html" failed (2: No such file or directory), client: 10.0.1.195, server: _, request: "GET / HTTP/1.1", host: "10.0.0.85" 2020/04/26 14:31:19 [error] 14950#0: *3104 "/var/www/rails/Portfolio/html/index.html" is not found (2: No such file or directory), client: 10.0.1.56, server: _, request: "GET / HTTP/1.1", host: "10.0.0.85" 2020/04/26 14:31:19 [error] 14950#0: *3104 open() "/var/www/rails/Portfolio/html/404.html" failed (2: No such file or directory), client: 10.0.1.56, server: _, request: "GET / HTTP/1.1", host: "10.0.0.85" 2020/04/26 14:31:21 [error] 14950#0: *3105 "/var/www/rails/Portfolio/html/index.html" is not found (2: No such file or directory), client: 10.0.0.146, server: _, request: "GET / HTTP/1.1", host: "10.0.0.85" 2020/04/26 14:31:21 [error] 14950#0: *3105 open() "/var/www/rails/Portfolio/html/404.html" failed (2: No such file or directory), client: 10.0.0.146, server: _, request: "GET / HTTP/1.1", host: "10.0.0.85" 2020/04/26 14:31:29 [error] 14950#0: *3106 "/var/www/rails/Portfolio/html/index.html" is not found (2: No such file or directory), client: 10.0.1.56, server: _, request: "GET / HTTP/1.1", host: "10.0.0.85" 2020/04/26 14:31:29 [error] 14950#0: *3106 open() "/var/www/rails/Portfolio/html/404.html" failed (2: No such file or directory), client: 10.0.1.56, server: _, request: "GET / HTTP/1.1", host: "10.0.0.85" 2020/04/26 14:31:31 [error] 14950#0: *3107 "/var/www/rails/Portfolio/html/index.html" is not found (2: No such file or directory), client: 10.0.0.146, server: _, request: "GET / HTTP/1.1", host: "10.0.0.85" 2020/04/26 14:31:31 [error] 14950#0: *3107 open() "/var/www/rails/Portfolio/html/404.html" failed (2: No such file or directory), client: 10.0.0.146, server: _, request: "GET / HTTP/1.1", host: "10.0.0.85" 2020/04/26 14:31:36 [error] 14950#0: *3108 "/var/www/rails/Portfolio/html/index.html" is not found (2: No such file or directory), client: 10.0.0.101, server: _, request: "GET / HTTP/1.1", host: "10.0.0.85" 2020/04/26 14:31:36 [error] 14950#0: *3108 open() "/var/www/rails/Portfolio/html/404.html" failed (2: No such file or directory), client: 10.0.0.101, server: _, request: "GET / HTTP/1.1", host: "10.0.0.85" 2020/04/26 14:31:39 [error] 14950#0: *3109 "/var/www/rails/Portfolio/html/index.html" is not found (2: No such file or directory), client: 10.0.1.56, server: _, request: "GET / HTTP/1.1", host: "10.0.0.85" 2020/04/26 14:31:39 [error] 14950#0: *3109 open() "/var/www/rails/Portfolio/html/404.html" failed (2: No such file or directory), client: 10.0.1.56, server: _, request: "GET / HTTP/1.1", host: "10.0.0.85" 2020/04/26 14:31:41 [error] 14950#0: *3110 "/var/www/rails/Portfolio/html/index.html" is not found (2: No such file or directory), client: 10.0.0.146, server: _, request: "GET / HTTP/1.1", host: "10.0.0.85" 2020/04/26 14:31:41 [error] 14950#0: *3110 open() "/var/www/rails/Portfolio/html/404.html" failed (2: No such file or directory), client: 10.0.0.146, server: _, request: "GET / HTTP/1.1", host: "10.0.0.85

調べて見ましたが似たようなエラーに遭遇している人が見つかりませんでした。

/etc/nginx/conf.d/Portfolio.confは以下の通りです。
イメージ説明

他、要望がありましたらファイルの中身を記載します。

上記のログから推測される原因のみでも良いので、どなたかアドバイスをください。

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

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

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

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

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

guest

回答1

0

listen および server_name にマッチするバーチャルホストが応答を返します。おそらく、amazonaws.com の場合はデフォルトサーバーがレスポンスを返すので404Notfoundになってるのではいかと思います。

解決方法は2通りありますので、どちらかを試してみてください。

listen 80default_server オプションを付ける。これで server_name 18.180.202.118 のバーチャルホストがデフォルトサーバーになります。サーバー名に一致しないすべてのリクエストはこのバーチャルホストが応答を返すようになります。

server { listen 80 default_server; server_name 18.180.202.188;

もう一つは、server_name に amazonaws.com の ホスト名を追加します。明示的にホスト名をバーチャルホストの名前に指定します。複数していすると

server { listen 80; server_name 18.180.202.118 ec2-IPアドレス.ap-northeast-1.compute.amazonaws.com;

投稿2020/04/26 16:41

take88

総合スコア1398

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

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

NEMOTOSHOTA

2020/04/27 05:55 編集

take88さん、回答ありがとうございます。 1つ目の方法を試してから、2つ目の方法に移りたいと思います。 1つめの方法を試し、nginxの再起動コマンドを入力したところ次のように表示されました。 nginx: [emerg] a duplicate default server for 0.0.0.0:80 in /etc/nginx/nginx.conf:39 /etc/nginx/nginx.conf内で0.0.0.0:80のdefault serverが重複しているということなので、nginx.confを見てみると次のように記述がありました。 server { listen 80 default_server; listen [::]:80 default_server; server_name _; root /var/www/rails/Portfolio/html; したがって 上記の1つめの80の隣のdefault_serverの部分を消してnginxをリロードしたところ、次のエラーが表示されました。 2020/04/27 03:06:39 [error] 17838#0: *15306 connect() to unix:/var/www/rails/Portfolio/tmp/sockets/.unicorn.sock failed (111: Connection refused) while connecting to upstream, client: 10.0.0.101, server: 18.180.202.188, request: "GET / HTTP/1.1", upstream: "http://unix:/var/www/rails/Portfolio/tmp/sockets/.unicorn.sock:/", host: "10.0.0.85" 2020/04/27 03:06:39 [error] 17838#0: *15308 connect() to unix:/var/www/rails/Portfolio/tmp/sockets/.unicorn.sock failed (111: Connection refused) while connecting to upstream, client: 10.0.1.56, server: 18.180.202.188, request: "GET / HTTP/1.1", upstream: "http://unix:/var/www/rails/Portfolio/tmp/sockets/.unicorn.sock:/", host: "10.0.0.85" 2020/04/27 03:06:42 [error] 17838#0: *15310 connect() to unix:/var/www/rails/Portfolio/tmp/sockets/.unicorn.sock failed (111: Connection refused) while connecting to upstream, client: 10.0.0.146, server: 18.180.202.188, request: "GET / HTTP/1.1", upstream: "http://unix:/var/www/rails/Portfolio/tmp/sockets/.unicorn.sock:/", host: "10.0.0.85" 調べたところ、nginxの権限がないということで、 /etc/nginx/nginx.confの中のuser nginxの部分をuser ec2にログインしているユーザーに変えてnginxをリロードしたところ、http://ec2-IPアドレス.ap-northeast-1.compute.amazonaws.com/にアクセスするとWe're sorry, but something went wrongと表示されるようになりました。 http://Ipアドレス/にアクセスすると変わらずWe're sorry, but something went wrong.と表示されます。 調べて見たところ、以下の記事が見つかりました。 https://qiita.com/SanoHiroshi/items/d7942d66678f0d60f0ed >ソケットのパス指定が間違えている。 >nginxのconfファイルをもう一度見直す。 絶対パスで指定する。 指定できるところは指定しないとこういったところ自動は怖い。 エラーが起きても原因が見つけにくい。 capistrano3-railsのGemを入れないとそもそもtmp/sockets/unicorn.sockファイルが生成されない。 ファイルが存在しないのだからそりゃつながらない。 自分はこれではまった。 capistranoのバージョン3以上を使っているなら必須です。 socketはつながっているが認証が通っていない場合も起こる。 インスタンスのユーザー指定が間違えている。 パーミッションが違うなどがほとんど。 EC2のインスタンスのセキュリティグループの設定が間違っている場合も起こる。 必要なアクセスが許可されていない場合があるので一応見直しましょう。 現在上から対応しているのですが、いまだどこが悪いか不明な状態ですのでPortfolio.confの設定から考えられる原因があればアドバイスをいただきたいです。 ※ec2上のアプリのconfig/development.rbでは下記の部分をfalseにする必要があるということで、設定しました config.force_ssl = false
take88

2020/04/28 02:25

Nginxのユーザはデフォルトの nginx でいいと思います。 Portfolio.conf を見ただけだとよくわかりませんが、.unicorn.sock のパスを替えてみるとどうでしょうか。 例) /var/www/rails/Portfolio/tmp/sockets/.unicorn.sock -> /tmp/unicorn.sock unicornの設定も適宜、変更してみてください。 変更したら unicornとNginxを再起動してください。
NEMOTOSHOTA

2020/04/29 09:59

ありがとうございます、上記試して見ます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問