tutorial rails que elastic docs deploy aws ruby-on-rails nginx amazon-ec2 elastic-beanstalk puma

ruby on rails - que - La aplicación Rails desplegada en Elastic Beanstalk con Puma falla-502 errores en cada solicitud



elastic beanstalk docs (3)

Acabo de implementar una aplicación Rails en Elastic Beanstalk, y cada solicitud me da un error 502.

Aquí está el contenido de /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"

Creo que el puma está corriendo -

[ec2-user@ip-172-31-44-135 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

Alguien sabe lo que está pasando?


Esta línea en tu archivo de registro significa que has configurado tu nginx incorrectamente.

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

En realidad, nginx intenta usar un socket de dominio unix como url HTTP.

No puedo decir exactamente qué está mal en su configuración de nginx sin él, pero debería tener algo como esto:

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; }

También debería consultar este nginx doc http://nginx.org/en/docs/http/ngx_http_upstream_module.html


El documento de AWS exige que puma gema se instale como parte de su aplicación.

Agregue lo siguiente a su Gemfile según corresponda:

group :production do gem ''puma'' end


Me enfrenté al mismo error y config/puma.rb estas dos líneas a config/puma.rb solucioné el problema:

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

Después de este paso me enfrenté a otro error para agregar valores ENV, lo cual es muy sencillo.

Espero que esto ayude.