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

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

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

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

nginx

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

Amazon EC2

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

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

解決済

[AWS]EC2上でNginxからPuma(Ruby)への接続ができず、ブラウザに「このサイトにアクセスできません」と表示される

hajsu00
hajsu00

総合スコア117

Ruby on Rails 6

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

nginx

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

Amazon EC2

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

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

1回答

0評価

1クリップ

457閲覧

投稿2022/05/05 13:43

編集2022/05/06 23:37

EC2上にRailsアプリのデプロイを試みています。

ブラウザからアクセスすると、「このサイトにアクセスできません」と表示されて解決できずにいます。

ご助言をいただけると幸いです。

起きている問題

EC2にRailsアプリをデプロイ後、ブラウザから対象ドメインにアクセスしてもnginx => pumaの接続に失敗する。

前提事項

開発環境

・macOS Monterey v12.1
・ruby v3.0.3
・Rails v6.1.4.4
・MySQL 8.0.28
・puma 5.5.2
・nginx 1.20.0

インフラ構成図

イメージ説明

関連するコード

ruby

# src/config/puma.rb workers Integer(ENV['WEB_CONCURRENCY'] || 2) max_threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 } min_threads_count = ENV.fetch("RAILS_MIN_THREADS") { max_threads_count } threads min_threads_count, max_threads_count preload_app! rails_env = ENV.fetch("RAILS_ENV") { "development" } environment rails_env case rails_env when "development" port ENV.fetch("PORT") { 3000 } when "production" bind "unix:///var/www/my_app/src/tmp/sockets/puma.sock" end pidfile ENV.fetch("PIDFILE") { "tmp/pids/server.pid" } plugin :tmp_restart on_worker_boot do # Worker specific setup for Rails 4.1+ # See: https://devcenter.heroku.com/articles/deploying-rails-applications-with-the-puma-web-server#on-worker-boot ActiveRecord::Base.establish_connection end
# /etc/nginx/conf.d/my_app.conf upstream puma { server unix:///var/www/my_app/src/tmp/sockets/puma.sock; } server { listen 80; server_name my_app.com; keepalive_timeout 0; access_log /var/log/nginx/my_app.access.log main; client_max_body_size 4G; root /var/www/my_app/src/public; location ~ .*\.(swf|SWF|ico|ICO|jar|txt|gz|js) { root /var/www/my_app/src/public; expires 15m; break; } location ~ ^\/fonts\/* { root /var/www/my_app/src/public; expires 15m; break; } location ~ ^\/assets\/* { root /var/www/my_app/src/public; break; } location ~ ^\/favicon\/* { root /var/www/my_app/src/public; break; }

確認したこと

pumaが起動していることを確認

ブラウザの更新ボタンを押してもログが出ないため、Nginx => Pumaの接続ができていないと考えています。

bash

$ rails s => Booting Puma => Rails 6.1.4.4 application starting in production => Run `bin/rails server --help` for more startup options [25055] Puma starting in cluster mode... [25055] * Puma version: 5.5.2 (ruby 3.0.3-p157) ("Zawgyi") [25055] * Min threads: 5 [25055] * Max threads: 5 [25055] * Environment: production [25055] * Master PID: 25055 [25055] * Workers: 2 [25055] * Restarts: () hot () phased [25055] * Preloading application [25055] * Listening on unix:///var/www/my_app/src/tmp/sockets/puma.sock [25055] Use Ctrl-C to stop [25055] - Worker 0 (PID: 25091) booted in 0.0s, phase: 0 [25055] - Worker 1 (PID: 25092) booted in 0.0s, phase: 0

nginxが起動していることを確認

bash

$ ps aux | grep nginx root 25163 0.0 0.1 39992 1016 ? Ss 13:06 0:00 nginx: master process nginx nginx 25164 0.0 0.3 40376 3080 ? S 13:06 0:00 nginx: worker process my_username 25166 0.0 0.0 119440 980 pts/0 S+ 13:06 0:00 grep --color=auto nginx

RailsのSSL受付設定をOFFに(まだSSL化をしていないため)

ruby

# src/config/environments/production.rb ... config.force_ssl = false ...

ローカル、EC2上共に$curl http://IPアドレス/で下記が返ってくる

bash

$ curl http://IPアドレス/ ---------------------------------------------- <!DOCTYPE html> <html> <head> <title>We're sorry, but something went wrong (500)</title> <meta name="viewport" content="width=device-width,initial-scale=1"> <style> .rails-default-error-page { background-color: #EFEFEF; color: #2E2F30; ... </style> </head> <body class="rails-default-error-page"> <!-- This file lives in public/500.html --> <div class="dialog"> <div> <h1>We're sorry, but something went wrong.</h1> </div> <p>If you are the application owner check the logs for more information.</p> </div> </body> </html>

nginxのアクセスログを確認

アクセスはできている。

bash

$ cat my_app.access.log ... 185.180.143.7 - - [05/May/2022:13:09:13 +0000] "GET / HTTP/1.1" 500 1635 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36" "-" 3.115.120.160 - - [05/May/2022:13:10:13 +0000] "GET / HTTP/1.1" 500 1635 "-" "curl/7.79.1" "-" 210.170.174.207 - - [05/May/2022:13:10:55 +0000] "GET / HTTP/1.1" 500 1635 "-" "curl/7.77.0" "-" 95.214.235.205 - - [05/May/2022:13:13:55 +0000] "GET /.env HTTP/1.1" 404 746 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36" "-" 95.214.235.205 - - [05/May/2022:13:13:56 +0000] "POST / HTTP/1.1" 404 746 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36" "-"

※対応するエラーログは無し


お手数ですが、解決へのヒントをいただけないでしょうか。
よろしくお願いします。

追記1

Railsaのエラーログが出ていました。
application.html.erbをrenderするときに 500エラー が出ていました。Nginx => Puma の接続はうまくいっているということでしょうか。
ログを見ると、多分tailwindが悪さをしています。そしてなぜかwordpressのページにアクセスしているが、wordpress使ったことない...

bash

# src/log/production.log I, [2022-05-06T04:16:31.459570 #25092] INFO -- : [0327e*********78e81] Started GET "/" for 172.***.***.*** at 2022-05-06 04:16:31 +0000 I, [2022-05-06T04:16:31.465913 #25092] INFO -- : [0327e*********78e81] Processing by Users::SessionsController#new as HTML I, [2022-05-06T04:16:31.468518 #25092] INFO -- : [0327e*********78e81] Rendered users/sessions/new.html.erb within layouts/application (Duration: 1.3ms | Allocations: 622) I, [2022-05-06T04:16:31.470831 #25092] INFO -- : [0327e*********78e81] Rendered layout layouts/application.html.erb (Duration: 3.7ms | Allocations: 3792) I, [2022-05-06T04:16:31.470987 #25092] INFO -- : [0327e*********78e81] Completed 500 Internal Server Error in 5ms (Allocations: 4395) F, [2022-05-06T04:16:31.471712 #25092] FATAL -- : [0327e*********78e81] [0327e*********78e81] ActionView::Template::Error (The asset "tailwind.css" is not present in the asset pipeline. ): [0327e*********78e81] 6: <meta name="viewport" content="width=device-width,initial-scale=1"> [0327e*********78e81] 7: <%= csrf_meta_tags %> [0327e*********78e81] 8: <%= csp_meta_tag %> [0327e*********78e81] 9: <%= stylesheet_link_tag "tailwind", "inter-font", "data-turbo-track": "reload" %> [0327e*********78e81] 10: [0327e*********78e81] 11: <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %> [0327e*********78e81] 12: <%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %> [0327e*********78e81] [0327e*********78e81] app/views/layouts/application.html.erb:9 I, [2022-05-06T04:16:31.616662 #25092] INFO -- : [101c3*********80f92] Started GET "/blog/wp-includes/wlwmanifest.xml" for 172.***.***.*** at 2022-05-06 04:16:31 +0000 F, [2022-05-06T04:16:31.622688 #25092] FATAL -- : [101c3*********80f92] [101c3*********80f92] ActionController::RoutingError (No route matches [GET] "/blog/wp-includes/wlwmanifest.xml"): [101c3*********80f92] I, [2022-05-06T04:16:31.774667 #25092] INFO -- : [5d3d9*********78aee] Started GET "/web/wp-includes/wlwmanifest.xml" for 172.***.***.*** at 2022-05-06 04:16:31 +0000 F, [2022-05-06T04:16:31.780607 #25092] FATAL -- : [5d3d9*********78aee] [5d3d9*********78aee] ActionController::RoutingError (No route matches [GET] "/web/wp-includes/wlwmanifest.xml"): [5d3d9*********78aee] I, [2022-05-06T04:16:31.924361 #25092] INFO -- : [16742*********3549d] Started GET "/wordpress/wp-includes/wlwmanifest.xml" for 172.***.***.*** at 2022-05-06 04:16:31 +0000

追記2

nginxとrails、同アクセスのログを取り直しました。
app/views/layouts/application.html.erb:9
でエラーが出ていました。

bash

$ cat access.log 210.170.174.207 - - [06/May/2022:11:22:43 +0000] "GET / HTTP/1.1" 500 1635 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36" "-" 210.170.174.207 - - [06/May/2022:11:22:43 +0000] "GET /favicon.ico HTTP/1.1" 304 0 "http://my_app.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36" "-" $ cat error.log <なし> $ cat /var/www/my_app/src/log/production.log I, [2022-05-06T11:22:43.539910 #589] INFO -- : [f23eb******1b072] Started GET "/" for 210.***.***.207 at 2022-05-06 11:22:43 +0000 I, [2022-05-06T11:22:43.546294 #589] INFO -- : [f23eb******1b072] Processing by Users::SessionsController#new as HTML I, [2022-05-06T11:22:43.548823 #589] INFO -- : [f23eb******1b072] Rendered users/sessions/new.html.erb within layouts/application (Duration: 1.2ms | Allocations: 622) I, [2022-05-06T11:22:43.551109 #589] INFO -- : [f23eb******1b072] Rendered layout layouts/application.html.erb (Duration: 3.5ms | Allocations: 3793) I, [2022-05-06T11:22:43.551258 #589] INFO -- : [f23eb******1b072] Completed 500 Internal Server Error in 5ms (Allocations: 4409) F, [2022-05-06T11:22:43.551993 #589] FATAL -- : [f23eb******1b072] [f23eb******1b072] ActionView::Template::Error (The asset "tailwind.css" is not present in the asset pipeline. ): [f23eb******1b072] 6: <meta name="viewport" content="width=device-width,initial-scale=1"> [f23eb******1b072] 7: <%= csrf_meta_tags %> [f23eb******1b072] 8: <%= csp_meta_tag %> [f23eb******1b072] 9: <%= stylesheet_link_tag "tailwind", "inter-font", "data-turbo-track": "reload" %> [f23eb******1b072] 10: [f23eb******1b072] 11: <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %> [f23eb******1b072] 12: <%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %> [f23eb******1b072] [f23eb******1b072] app/views/layouts/application.html.erb:9

また、ブラウザからアクセスした時の表示が「We're sorry, but something went wrong.」に変わりました。
イメージ説明

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

winterboum

2022/05/05 22:28

nginx のlogはみましたか curl http:my_app.com ではどうなりますか
CHERRY

2022/05/05 23:24

nginx のアクセスログに500 エラーが出ているようですが、Rails 側のログには何か出ていないのでしょうか。
yu_1985

2022/05/06 05:24

Rails側のエラーページっぽいものが出てるのでそっちのログも見てください。
hajsu00

2022/05/06 10:21

コメントありがとうございます。 まず、curl http:my_app.com は curl http://IPアドレス/ と同様のものが返ってきました。 またRailsのエラーログについては本文に追記しましたが(お恥ずかしながら、そんなログが出力されることを知りませんでした...)、application.html.erb を render するときに 500エラーが発生していました。 加えてtailwindの読み込みに関するエラーと、なぜかワードプレスへのルーティングエラーになっていました。 ワードプレスなんて一度も触ったことはないですが...
yu_1985

2022/05/06 10:27

外部に公開しているのなら攻撃目的の怪しいアクセスは必ず来ます。 そこではなくて、確実に自分がアクセスしたタイミングで何が表示されるかを確認してください。 一旦接続をマイIPのみに絞って余計なアクセスが発生しないような状態で試すことをオススメします。 貼ったログはnginxのアクセスログのタイムスタンプに一致するものがないのでどのアクセスの時に何が起こったのか紐付けられません。
hajsu00

2022/05/06 11:46

手こずりましたが、同アクセス時刻の取得ができました。 外部公開が初めてで、いろいろなアクセスが来るという感覚が今までありませんでした。 IPアドレスでの接続がうまくいかなかったため、ひとまずドメインへのアクセスで検証しています。 nginxへのアクセスログがある一方でエラーは無く、Railsのtailwind絡みのテンプレートエラーが出ていますので、原因はこれに絞れたと理解しています。 ありがとうございます。

まだ回答がついていません

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Ruby on Rails 6

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

nginx

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

Amazon EC2

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

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。