web-dev-qa-db-ja.com

PumaおよびNginx502 Bad Gatewayエラー(Ubuntuサーバー14.04)

Railsアプリケーションをデプロイする必要があるので、ここからすべての手順を実行しました https://www.digitalocean.com/community/tutorials/how-to-deploy- a-Rails-app-with-puma-and-nginx-on-ubuntu-14-04

しかし、チュートリアルの終わりに、このエラーが発生します->「502BadGateway」

[〜#〜]編集[〜#〜]
エラーメッセージが表示されました->「申し訳ありませんが、問題が発生しました。」
しかし、Nginxエラー出力は同じです。pumaエラーメッセージを確認しますが、開始時と正常に停止したときにログに記録されます。

App_directory/logの下にあるRailsログは、出力を生成しません。
puma-manager->正しく動作することを確認しました
パス---> 3回チェックしました

Nginx error.log出力メッセージ:

2016/05/18 14:22:21 [crit] 1099#0: *7 connect() to unix:/home/deploy   /hotel-automata/shared/sockets/puma.sock failed (2: No such file or directory) while connecting to upstream, client: 192.168.2.105, server: localhost, request: "GET /favicon.ico HTTP/1.1", upstream: "http://unix:/home/deploy/hotel-automata/shared/sockets/puma.sock:/500.html", Host: "192.168.2.170"

OS-> Vmware Player、ブリッジネットワークUbuntu Server 14.0.4
Rubyバージョン:2.3.1
Railsバージョン:4.2.5.2

これは/ etc/nginx/sites-available/defaultの私のnginx設定コンテンツです

upstream app {
# Path to Puma SOCK file, as defined previously
server unix:/home/deploy/hotel-automata/shared/sockets/puma.sock fail_timeout=0;
}

server {
listen 80;
server_name localhost;

root /home/deploy/hotel-automata/public;

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

location @app {
    proxy_pass http://app;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_Host;
    proxy_redirect off;
}

error_page 500 502 503 504 /500.html;
client_max_body_size 4G;
keepalive_timeout 10;
}
9
Hakan Kara

編集:

  1. ソケットが存在することをユーザーに知らせます。それ以外の場合は、この点で失敗しています:

config/puma.rbソケットを指す線が必要です:

bind "unix://<path or variable for the path where the socket will be>/sockets/puma.sock"

変数の例:

application_path = '/home/deploy/hotel-automata/shared'

bind "unix://#{application_path}/sockets/puma.socket"
  1. ソケットのアクセス許可を確認してください

Nginxがソケットにアクセスできることを確認する必要があります(必要な権限、つまりRWを持っている)

パス全体の権限を確認して、次のことを試してください。

namei -m /home/deploy/hotel-automata/shared/sockets/puma.sock

または、これを試してください。

Sudo -u <user> test <-r / -w > <path> && echo True

つまり.

Sudo -u nginx test -w /home/deploy/hotel-automata/shared/sockets/puma.sock && echo True

NginxはそのソケットへのRWアクセスを必要とします。

Trueが返されない場合は、ユーザー取得していないその権限、つまり-w->書き込みを意味します

5
MMT

君の puma.rbファイルは次のようになります。

# /config/puma.rb

  app = "manabalss" # App-specific
  root = "/home/deployer/apps/#{app}"

  workers  5
  threads  1, 1 # relying on many workers for thread-unsafe apps

  rackup      DefaultRackup
  port        11592
  environment ENV['RACK_ENV'] || 'production'
  daemonize   true

  pidfile "#{root}/puma/puma.pid"
  stdout_redirect "#{root}/puma/puma.log", "#{root}/puma/puma_error.log"
  bind "unix:/tmp/puma.socket

そして、nginx.confは次のようになります。

# config/deploy/nginx.conf

upstream puma {
  server unix:/tmp/puma.socket fail_timeout=1;
}

# This block redirects http requests to https version 
server {
  listen 37.139.0.211:80 default deferred;
  server_name www.manabalss.lv, manabalss.lv;
  return 307  https://manabalss.lv$request_uri;
}

server {
  listen                37.139.0.211:443 ssl;
  server_name           manabalss.lv;
  ssl_certificate       /etc/ssl/server.crt;
  ssl_certificate_key   /etc/ssl/server.key;
  ssl_protocols         SSLv3 TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers           RC4:HIGH:!aNULL:!MD5;
  ssl_session_cache     shared:SSL:15m;
  ssl_session_timeout   15m;

  root /home/deployer/apps/manabalss/current/public;

  location ^~ /assets/ {
    gzip_static on;
    gzip_vary on;
    expires max;
    add_header Cache-Control public;
  }

  try_files $uri/index.html $uri @puma;
  location @puma {
    proxy_set_header  X-Real-IP       $remote_addr;
    proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header  X-Forwarded-Proto https;
    proxy_set_header  Host $http_Host;
    proxy_redirect    off;
    proxy_pass        http://puma;
  }

  error_page 500 502 503 504 /500.html;
  client_max_body_size 4G;
  keepalive_timeout 10;
}

これで問題が解決しない場合は、これを確認してください。

Rails + Puma + Nginx Every Bad Gateway 502

2
Subhash Chandra