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

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

ただいまの
回答率

89.88%

AWS デプロイ 500エラー になります!

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 2,679

nk117

score 29

イメージ説明

Railsで作成したサイトをAWSにデプロイし、いざIPアドレスで表示させようとした所500エラーになります。
あと一歩のところで1日が経過しました。この問題で考えられる原因はありますか?

現状について・・・
ec2
nginx
mysql
unicorn
は全て起動確認済です。

rake db:migrate RAILS_ENV=productionもできました。
プリコンパイルも完了しています。

環境について・・・
AWS
ec2
mac osx
ruby 2.3.1
rails 4.2.6
nginx/1.10.3
unicorn v5.2.0
mysql 5.5.56

初学者ですが何卒宜しくお願いします。

追記

nginx.error.logの内容↓

2017/07/25 04:15:20 [error] 2965#0: *3 connect() to unix:/var/www/rails/アプリ名/tmp/sockets/.unicorn.sock failed (111: Connection refused) while connecting to upstream, client: 139.162.124.167, server: ipアドレス, request: "GET / HTTP/1.1", upstream: "http://unix:/var/www/rails/アプリ名/tmp/sockets/.unicorn.sock:/", host: "ipアドレス"
2017/07/25 23:41:18 [error] 29018#0: *33 open() "/usr/share/nginx/html/phpmyadmin/scripts/setup.php" failed (2: No such file or directory), client: 191.96.249.136, server: localhost, request: "GET /phpmyadmin/scripts/setup.php HTTP/1.0"

unicornの設定
unicorn.conf.rb↓

# set lets
  $worker  = 2
  $timeout = 30
  $app_dir = "/var/www/rails/アプリ名"
  $listen  = File.expand_path 'tmp/sockets/.unicorn.sock', $app_dir
  $pid     = File.expand_path 'tmp/pids/unicorn.pid', $app_dir
  $std_log = File.expand_path 'log/unicorn.log', $app_dir
  # set config
  worker_processes  $worker
  working_directory $app_dir
  stderr_path $std_log
  stdout_path $std_log
  timeout $timeout
  listen  $listen
  pid $pid
  # loading booster
  preload_app true
  # before starting processes
  before_fork do |server, worker|
    defined?(ActiveRecord::Base) and ActiveRecord::Base.connection.disconnect!
    old_pid = "#{server.config[:pid]}.oldbin"
    if old_pid != server.pid
      begin
        Process.kill "QUIT", File.read(old_pid).to_i
      rescue Errno::ENOENT, Errno::ESRCH
      end
    end
  end
  # after finishing processes
  after_fork do |server, worker|
    defined?(ActiveRecord::Base) and ActiveRecord::Base.establish_connection
  end


nginxの設定
アプリ名.conf↓

# log directory
error_log  /var/www/rails/アプリ名/log/nginx.error.log;
access_log /var/www/rails/アプリ名/log/nginx.access.log;
# max body size
client_max_body_size 2G;
upstream app_server {
  # for UNIX domain socket setups
  server unix:/var/www/rails/アプリ名/tmp/sockets/.unicorn.sock fail_timeout=0;
}
server {
  listen 80;
  server_name IPアドレス;
  # nginx so increasing this is generally safe...
  keepalive_timeout 5;
  # path for static files
  root /var/www/rails/アプリ名/public;
  # page cache loading
  try_files $uri/index.html $uri.html $uri @app;
  location @app {
    # HTTP headers
    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;
  }
  # Rails error pages
  error_page 500 502 503 504 /500.html;
  location = /500.html {
    root /var/www/rails/アプリ名/public;
  }
}
  • 気になる質問をクリップする

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

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

  • CHERRY

    2017/07/25 13:34

    nginx のログに出力されている内容を質問に追記してください。

    キャンセル

  • nk117

    2017/07/26 11:51

    ご返信有難う御座います。追記しました。

    キャンセル

回答 3

checkベストアンサー

0

2017/07/25 04:15:20 のログが恐らくnk117さんがアクセスしたものと思われますが、UNIXドメインソケットへ接続できないエラーです。
nginxプロセスのオーナーは通常nginxユーザーですが、このユーザーから対象のUNIXドメインソケットへはアクセス可能でしょうか?
下記コマンドの結果を教えてください。

ls -l /var/www/rails/アプリ名/tmp/sockets/.unicorn.sock
ls -ld /var/www/rails/アプリ名/tmp/sockets
ls -ld /var/www/rails/アプリ名/tmp
ls -ld /var/www/rails/アプリ名
ls -ld /var/www/rails
ls -ld /var/www
ls -ld /var

 以下追記

パーミッションは問題なさそうです。
UNIXドメインSOCKETはいくつか制限あるので私は利用を避けてます。(CentOS7では/tmpで共有できないとか)

可能であればINETドメインSOCKETにしてみては如何でしょうか。

  • unicorn.conf.rb
listen "127.0.0.1:3000"
  • アプリ名.conf
upstream app_server {
  # for UNIX domain socket setups
  server 127.0.0.1:3000;
}

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2017/07/26 14:48

    ユニコーン起動できました!

    We're sorry, but something went wrong.
    If you are the application owner check the logs for more information.

    IPアドレスでアクセスしたところ、上記のエラー文が表示されております。

    キャンセル

  • 2017/07/26 21:27

    更新
    listen 3000の設定を一箇所もれていたので、修正後、IPアドレスでアクセスしたところ、
    Welcome to nginx on the Amazon Linux AMI!のページが表示されています。

    キャンセル

  • 2017/07/27 01:51

    500エラーは解消したので一度質問を閉じます。有難う御座いました。

    キャンセル

0

質問者様の設定内容などをチェックできないのでなんとも言えませんが、
internal server errorということで、まずはrailsアプリがローカル上でエラーを出さないか確認
➡︎OKの場合は、経験上nginxの設定ファイルが間違っている場合が多い気がします、、
こちらの記事などで詳しく解説されているのでチェックされてみてはいかがでしょうか。
http://qiita.com/naoki_mochizuki/items/f795fe3e661a3349a7ce

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2017/07/26 12:00

    ローカル上では問題ないので、本番環境のなにかが原因だと思われます。

    キャンセル

  • 2017/07/26 12:03 編集

    http://qiita.com/naoki_mochizuki/items/f795fe3e661a3349a7ce
    上記URL有難う御座います。こちらのサイトの手順でデプロイ作業を進めるのは2回目です。前回も同じように500エラーが起きたのですが、ユニコーンを再起動することで解決しました。今回は再起動しても解決に至っておりません。

    キャンセル

0

500だとnginxには到達しているはずなので、
nginx、unicorn, railsのログを見たら何かないですか。

初学者ならnginxとunicornのproxyあたりが怪しいと思います。
・nginxとunicornの実行ユーザ
・ソケットのパーミッション(ファイル、ディレクトリ)

ソケットならhttpにしてみたり、nginxのconfをデフォルトからチューニングなしで、まず設定してみるとか。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

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

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