AWS Elastic Beanstalk Ruby on Rails 6 应用程序部署错误与 nginx

Posted

技术标签:

【中文标题】AWS Elastic Beanstalk Ruby on Rails 6 应用程序部署错误与 nginx【英文标题】:AWS Elastic Beanstalk Ruby on Rails 6 app deployment error with nginx 【发布时间】:2021-04-09 04:11:36 【问题描述】:

我使用 Elastic Beanstalk Ruby 平台部署了一个 Rails 6 应用程序,尝试访问该应用程序时收到 502。 nginx错误日志有如下错误...

connect() 到 unix:///var/run/puma/my_app.sock 失败(11:资源 暂时不可用)同时连接到上游,客户端: XXX.XX.XX.XX,服务器:_,请求:“GET / HTTP/1.1”,上游: “http://unix:///var/run/puma/my_app.sock:/”,主机:“XXX.XX.XX.XX”

可能是什么问题?超出资源限制?

【问题讨论】:

您能否通过 ssh 进入 eb 实例并在其端口上 curl 您的应用程序并在端口 80 上使用 nginx 来确认应用程序是否正常工作? @Marcin 请原谅我的 n00bness,但这只是在 env-name.id.region.elasticbeanstalk.com url 上使用 :80 和 :3000 (默认 Rails 端口)执行curl附加? 从实例中它将是 curl localhost:80curl localhost:3000 @Marcin 一个线索!端口 80 curl 返回 502 页面,但 3000 curl 返回“无法连接到 localhost 端口 3000:连接被拒绝”。 Elastic Beanstalk 是否不会在部署时启动 rails 服务器?感谢您迄今为止的所有帮助! 我明白了。 ruby 通过套接字部署。你可以试试curl --unix-socket /var/run/puma/my_app.sock http:/hi 【参考方案1】:

检查/var/log/puma/puma.log,可能会发现You have already activated puma 5.2.2, but your Gemfile requires puma 4.x等错误信息。如果是这种情况,请确保您的 Gemfile 和 Gemfile.lock 指定在基于 Amazon Linux 2 的新 Ruby EB 平台上可用的 Puma 版本。

【讨论】:

以上是关于AWS Elastic Beanstalk Ruby on Rails 6 应用程序部署错误与 nginx的主要内容,如果未能解决你的问题,请参考以下文章

[AWS] Elastic Beanstalk

AWS Elastic Beanstalk CLI 安装错误

text AWS Elastic Beanstalk

HTTPS Elastic Beanstalk (AWS) 到 Android

AWS Elastic Beanstalk 无法担任角色

AWS Elastic Beanstalk