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:80
和 curl 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 CLI 安装错误