2015-05-20 6 views
11

Ich habe gerade eine Rails-App auf Elastic Beanstalk bereitgestellt, und jede Anfrage gibt mir einen Fehler 502.Rails-Anwendung auf Elastic Beanstalk mit Puma bereitgestellt fehlgeschlagen - 502 Fehler bei jeder Anforderung

Hier ist der Inhalt von /var/logs/nginx/error.log

2015/05/20 16:24:25 [warn] 1535#0: conflicting server name "localhost" on 0.0.0.0:80, ignored 
2015/05/20 16:27:12 [crit] 1537#0: *20 connect() to unix:///var/run/puma/my_app.sock failed (2: No such file or directory) while connecting to upstream, client: 172.31.51.94, server: _, request: "POST /get HTTP/1.1", upstream: "http://unix:///var/run/puma/my_app.sock:/get", host: "securities-api-prod.elasticbeanstalk.com" 
2015/05/20 16:27:17 [crit] 1537#0: *20 connect() to unix:///var/run/puma/my_app.sock failed (2: No such file or directory) while connecting to upstream, client: 172.31.51.94, server: _, request: "POST /get HTTP/1.1", upstream: "http://unix:///var/run/puma/my_app.sock:/get", host: "securities-api-prod.elasticbeanstalk.com" 
2015/05/20 16:27:19 [crit] 1537#0: *20 connect() to unix:///var/run/puma/my_app.sock failed (2: No such file or directory) while connecting to upstream, client: 172.31.51.94, server: _, request: "POST /get HTTP/1.1", upstream: "http://unix:///var/run/puma/my_app.sock:/get", host: "securities-api-prod.elasticbeanstalk.com" 
2015/05/20 16:27:22 [crit] 1537#0: *16 connect() to unix:///var/run/puma/my_app.sock failed (2: No such file or directory) while connecting to upstream, client: 172.31.44.210, server: _, request: "GET /datapoint?tickers=AAPL&datapoints=Ratings HTTP/1.1", upstream: "http://unix:///var/run/puma/my_app.sock:/datapoint?tickers=AAPL&datapoints=Ratings", host: "securities-api-prod.elasticbeanstalk.com" 
2015/05/20 16:27:27 [crit] 1537#0: *20 connect() to unix:///var/run/puma/my_app.sock failed (2: No such file or directory) while connecting to upstream, client: 172.31.51.94, server: _, request: "POST /get HTTP/1.1", upstream: "http://unix:///var/run/puma/my_app.sock:/get", host: "securities-api-prod.elasticbeanstalk.com" 
2015/05/20 16:27:32 [crit] 1537#0: *20 connect() to unix:///var/run/puma/my_app.sock failed (2: No such file or directory) while connecting to upstream, client: 172.31.51.94, server: _, request: "POST /get HTTP/1.1", upstream: "http://unix:///var/run/puma/my_app.sock:/get", host: "securities-api-prod.elasticbeanstalk.com" 
2015/05/20 16:28:53 [crit] 1537#0: *52 connect() to unix:///var/run/puma/my_app.sock failed (2: No such file or directory) while connecting to upstream, client: 172.31.51.94, server: _, request: "GET /datapoint?tickers=AAPL&datapoints=Ratings HTTP/1.1", upstream: "http://unix:///var/run/puma/my_app.sock:/datapoint?tickers=AAPL&datapoints=Ratings", host: "securities-api-prod.elasticbeanstalk.com" 
2015/05/20 16:30:47 [crit] 1537#0: *69 connect() to unix:///var/run/puma/my_app.sock failed (2: No such file or directory) while connecting to upstream, client: 172.31.51.94, server: _, request: "POST /get HTTP/1.1", upstream: "http://unix:///var/run/puma/my_app.sock:/get", host: "securities-api-prod.elasticbeanstalk.com" 

Ich denke, puma läuft -

[[email protected] nginx]$ ps aux | grep puma 
root  23299 1.0 0.2 53008 1428 ?  Ss 16:38 0:00 su -s /bin/bash -c puma -C /opt/elasticbeanstalk/support/conf/pumaconf.rb webapp 
webapp 23314 0.0 2.4 75764 14604 ?  Rsl 16:38 0:00 /opt/rubies/ruby-2.1.4/bin/ruby /opt/rubies/ruby-2.1.4/bin/puma -C /opt/elasticbeanstalk/support/conf/pumaconf.rb 
ec2-user 23317 0.0 0.1 110284 844 pts/0 S+ 16:38 0:00 grep puma 

pumaconf.rb

directory '/var/app/current' 
threads 8, 32 
workers %x(grep -c processor /proc/cpuinfo) 
bind 'unix:///var/run/puma/my_app.sock' 
stdout_redirect '/var/log/puma/puma.log', '/var/log/puma/puma.log', true 
daemonize false 

Wer weiß, Was ist los?

+0

bitte, bieten Sie Ihre pumaconf.rb es scheint, dass nginx nach nicht existierenden Puma-Socket-Datei –

+0

@StanislavMekhonoshin sucht Hinzugefügt! – chintanparikh

+0

Ich laufe auf ähnliches Problem. Haben Sie eine Lösung gefunden? – Disha

Antwort

0

Diese Zeile in Ihrer Logdatei bedeutet, dass Sie Ihr nginx falsch konfiguriert haben.

upstream: "http://unix:///var/run/puma/my_app.sock:/get" 

Eigentlich versucht Nginx Unix-Domain-Socket als HTTP-URL zu verwenden.

Kann nicht genau das sagen, was ohne diese auf Ihre nginx Config falsch ist, aber Sie sollten etwas davon haben:

upstream backend { 
    server backend1.example.com weight=5; 
    server 127.0.0.1:8080  max_fails=3 fail_timeout=30s; 
    server unix:/tmp/backend3; 

    server backup1.example.com backup; 
} 

Sie sollten auch diese nginx doc überprüfen http://nginx.org/en/docs/http/ngx_http_upstream_module.html

+1

Irgendwelche Idee, wo die Nginx-Konfiguration liegt? – chintanparikh

+0

Ich habe keine Erfahrung mit EBS, aber normalerweise nginx config befindet sich unter/etc/nginx/sites-enabled/* Aber ich würde versuchen, 'bind 'unix: /// var/run/puma/my_app.sock'' um 'tcp: /0.0.0.0: 8080'' zum Beispiel zu binden. Es wäre viel einfacher –

0

Die AWS doc beauftragt, dass Puma Gem als Teil Ihrer Anwendung installiert wird.

folgendes zu Ihrem Gemfile gegebenenfalls hinzufügen:

group :production do 
    gem 'puma' 
end 
+0

Ich bekomme immer noch die [Fehler] (http://stackoverflow.com/questions/37472304/rails-elastic-beanstalk-connection-time-out-puma-server). Scheint wie Anfrage zuerst zu Nginx vor Puma in den Zeitstempeln gehen. Ich weiß nicht, wie ich das beheben kann –

6

ich den gleichen Fehler konfrontiert und das Hinzufügen dieser zwei Linien zu config/puma.rb das Problem behoben:

bind "unix:///var/run/puma/my_app.sock" 
pidfile "/var/run/puma/my_app.sock" 

Nach diesem Schritt ich einen anderen Fehler konfrontiert um ENV-Werte hinzuzufügen, was sehr einfach ist.

Hoffe, das hilft.