Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 502坏网关nginx+;美洲狮+;弹性豆茎上的轨道3.2_Ruby On Rails_Nginx_Amazon Elastic Beanstalk_Puma - Fatal编程技术网

Ruby on rails 502坏网关nginx+;美洲狮+;弹性豆茎上的轨道3.2

Ruby on rails 502坏网关nginx+;美洲狮+;弹性豆茎上的轨道3.2,ruby-on-rails,nginx,amazon-elastic-beanstalk,puma,Ruby On Rails,Nginx,Amazon Elastic Beanstalk,Puma,部署成功,一切都是绿色的。但是当我们尝试访问应用程序URL时,它会给出502坏网关错误 使用ps-aux | grep puma检查puma进程不会返回连接到puma服务器的任何进程,但pgrep会返回以下内容 $pgrep -fl puma 18009 su -s /bin/bash -c bundle exec puma -C /opt/elasticbeanstalk/support/conf/pumaconf.rb webapp 18031 ruby /opt/rubies/ruby-2

部署成功,一切都是绿色的。但是当我们尝试访问应用程序URL时,它会给出
502坏网关
错误

使用
ps-aux | grep puma
检查puma进程不会返回连接到puma服务器的任何进程,但
pgrep
会返回以下内容

$pgrep -fl puma
18009 su -s /bin/bash -c bundle exec puma -C /opt/elasticbeanstalk/support/conf/pumaconf.rb webapp
18031 ruby /opt/rubies/ruby-2.0.0-p598/bin/puma -C /opt/elasticbeanstalk/support/conf/pumaconf.rb

我已经尝试了所有可能的组合,如nginx/puma的其他论坛/博客或支持站点所示。以下是状态

  • 默认配置-在nginx.conf和pumaconf.rb的上游选项中使用了UNIX://sock文件-这将导致502错误的gatway。选中时,puma未运行,每3分钟重新启动一次
  • 正如我们在DigitalOcean中使用的一样,将上面的上游配置URL更改为tcp://127.0.0.1:3000 在pumaconf.rb和conf.d/webapp.conf文件中的127.0.0.1:3000中。-这也不起作用,puma不能像上面一样正常运行
  • 我的问题是,

  • 为什么不能控制不同配置的puma的运行?为什么我们必须始终使用UI,而UI无法按照其他标准配置选项正确运行服务
  • UI中没有配置选项,无法从UI更改/验证。所以我们必须从SSH开始。但是,我们无法控制从控制台重新启动PUMA
  • 无论何时puma没有运行,我们都无法看到它所面临错误的任何日志。这真的毫无帮助
  • Puma即使在默认配置下也无法运行,因此它nginx无法与Puma对话,因此EC2没有真正意义

    如果您对此有任何想法,请告知我们如何解决此问题

    见此——

    在这一点上仍然没有答案,这就像我们的手被铐住了,无法改变任何配置

    更新

    AWS正在以某种方式停止和启动PUMA,因为在使用
    ps-ef | grep PUMA
    进行检查时,我可以看到进程ID发生了变化。因此,我让彪马在另一个港口工作,并试图检查它是否运行

    从另一个端口启动,然后从另一个控制台使用
    wget访问URLhttp://127.0.0.1:3000
    。它打印以下日志

    current]$ bundle exec puma -b tcp://127.0.0.1:3001
    Puma 2.0.1 starting...
    * Min threads: 0, max threads: 16
    * Environment: production
    * Listening on tcp://127.0.0.1:3001
    Rails Error: Unable to access log file. Please ensure that /var/app/current/log/production.log exists and is chmod 0666. The log level has been raised to WARN and the output directed to STDERR until the problem is fixed.
    Use Ctrl-C to stop
    2015-03-16 13:19:35 +0000: HTTP parse error, malformed request (): #<Puma::HttpParserError: Invalid HTTP format, parsing fails.>
    2015-03-16 13:19:35 +0000: ENV: {"rack.version"=>[1, 1], "rack.errors"=>#<IO:<STDERR>>, "rack.multithread"=>true, "rack.multiprocess"=>false, "rack.run_once"=>false, "SCRIPT_NAME"=>"", "CONTENT_TYPE"=>"text/plain", "QUERY_STRING"=>"", "SERVER_PROTOCOL"=>"HTTP/1.1", "SERVER_SOFTWARE"=>"2.0.1", "GATEWAY_INTERFACE"=>"CGI/1.2"}
    
    current]$bundle exec puma-btcp://127.0.0.1:3001
    彪马2.0.1启动。。。
    *最小线程数:0,最大线程数:16
    *环境:生产
    *倾听tcp://127.0.0.1:3001
    Rails错误:无法访问日志文件。请确保/var/app/current/log/production.log存在且为chmod 0666。日志级别已提升为警告,并将输出定向到STDERR,直到问题得到解决。
    使用Ctrl-C停止
    2015-03-16 13:19:35+0000:HTTP解析错误,请求格式错误():#
    2015-03-16 13:19:35+0000:ENV:{“rack.version”=>[1,1],“rack.errors”=>>,“rack.multi-thread”=>true,“rack.multi-process”=>false,“rack.run\u once”=>false,“SCRIPT\u NAME”=>,“CONTENT\u TYPE”=>“text/plain”,“QUERY\u字符串”=>,“SERVER\u协议”=>“HTTP/1.1”,“SERVER\u软件”=>“2.0.1”,“网关接口”=>“CGI/1.2”}
    

    那么,是否必须使用SSL?因为我认为默认情况下,它没有启用。

    我无法解决此问题。另外,我们应该只使用EC2自由实例而不是BeanStalk


    我们现在已经使用RDS释放EC2实例,并使用Capistrano和Nginx+Unicorn部署rails应用程序。虽然这并不容易,但最终我们还是成功了。

    我在上传rails应用程序后遇到了这个问题,我在secrets.yml(configsecrets.yml)上发现了这行代码(自动生成):
    secret\u key\u base:

    因此,您必须将其作为环境变量添加到您的环境中

    在环境仪表板中,转到配置软件环境属性并添加一个名为SECRET\u KEY\u BASE的新变量

    您可以设置任何值,但请确保它是一个安全密钥。
    这为我解决了这个问题,我希望能有所帮助。

    听起来nginx没有在puma运行的同一个端口上监听。您是否更改了puma/nginx配置?请签出/var/log/nginx/error.log以获取reason@Tal请看下面我的答案,我已经尝试了所有可能的配置,并检查了日志。问题是,Puma没有正常运行,并且没有打印任何错误日志。事情是,同样的配置在数字海洋上工作。因此,亚马逊似乎有问题。请在这方面提供帮助。好吧,发布答案不是办法。请移到问题部分。我必须承认,我已经受够了让亚马逊来处理我的服务器,并且已经转向弹性豆茎上的docker。很好地工作。通过添加SSL证书解决了此问题,SSL是此配置的必备工具。没有它,它就不会工作。