Rails AWS Elastic Beanstalk 上的应用程序:错误的 nginx 配置
Rails app on AWS Elastic Beanstalk: Bad nginx config
所以我有一个 rails 应用程序,是我几个月前通过 AWS Elastic Beanstalk 构建和部署的。项目被搁置,所以我终止了环境,希望我们回到这个项目时能够重新部署。
尽管我的应用程序在我的本地开发环境中仍然 运行 很好,但我无法部署它。来自我的 eb-activty.log
的错误:
PG::ConnectionBad: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
数据库是一个独立的 AWS RDS 实例,我可以成功测试连接,所以我知道它 运行。我已经添加了必要的环境变量并相应地配置了我的 database.yml
。需要明确的是,这是一个曾经有效的应用程序。在我终止环境和重新部署之间我没有做任何更改。
根本问题似乎是 nginx 没有正确配置,因为试图访问服务器 returns:
502 Bad Gateway
nginx/1.12.1
当我检查 nginx error.log
时,它充满了这样的错误:
2018/09/19 14:12:35 [crit] 3069#0: *653 connect() to unix:///var/run/puma/my_app.sock failed (2: No such file or directory) while connecting to upstream, client: 172.31.47.147, server: _, request: "GET / HTTP/1.1", upstream: "http://unix:///var/run/puma/my_app.sock:/", host: "172.31.47.147"
自然地,我用谷歌搜索了我的错误,并找到了 this Whosebug post.
我已经尝试将评分最高的答案中的这些建议行添加到我的 puma.rb
bind "unix:///var/run/puma/my_app.sock"
pidfile "/var/run/puma/my_app.sock"
这根本没有引起任何变化。
我确保尝试了其他建议,包括直接查看 nginx 配置文件。我确实发现配置中没有设置上游。据我所知,部署管道的 nginx 方面是由 Elastic Beanstalk 自动化的,所以很明显我设置的其他东西一定是不正确的。
我发现在任何情况下我都无法使用 eb deploy
部署应用程序我只能通过每次创建一个新环境来进行更改。我已经无数次重新创建应用程序,尝试不同的设置、gems 和包的版本、不同的 ruby 版本...等等。总而言之,我仍然不能影响错误的改变,我什至不能得到一个新的错误!只是相同的 PG:ConnectionBad
或 502 bad gateway
取决于我是从控制台还是浏览器看。
根据我的谷歌搜索,我的印象是这在某些方面与 puma 有关,但 puma 对我来说有点像黑匣子。
我在这里感觉很迷茫,非常感谢您愿意分享的任何指导。欢迎从任何日志或文件中获取更多信息,我很乐意提供更多详细信息。提前致谢!
可能是 RDS 安全组,是否配置为到达您的 elb?
您也可以尝试克隆数据库,以确保它不确定旧数据库是否存在奇怪的数据库问题,然后尝试连接到该数据库。
所以这不会是一个很有帮助的答案,因为我从来没有解决过这个问题。不过我不想让这个线程挂起。
我最终只是创建了一个新的 rails 环境,重新添加了所有的 gem 并移植了我的 controllers/views/models/routes。一旦我这样做了,我就能够毫无问题地进行部署。
我可以确认问题不在于安全组或数据库本身。新 rails 应用程序能够毫无问题地访问 RDS 实例。
感谢大家的评论和帮助,非常感谢!
所以我有一个 rails 应用程序,是我几个月前通过 AWS Elastic Beanstalk 构建和部署的。项目被搁置,所以我终止了环境,希望我们回到这个项目时能够重新部署。
尽管我的应用程序在我的本地开发环境中仍然 运行 很好,但我无法部署它。来自我的 eb-activty.log
的错误:
PG::ConnectionBad: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
数据库是一个独立的 AWS RDS 实例,我可以成功测试连接,所以我知道它 运行。我已经添加了必要的环境变量并相应地配置了我的 database.yml
。需要明确的是,这是一个曾经有效的应用程序。在我终止环境和重新部署之间我没有做任何更改。
根本问题似乎是 nginx 没有正确配置,因为试图访问服务器 returns:
502 Bad Gateway
nginx/1.12.1
当我检查 nginx error.log
时,它充满了这样的错误:
2018/09/19 14:12:35 [crit] 3069#0: *653 connect() to unix:///var/run/puma/my_app.sock failed (2: No such file or directory) while connecting to upstream, client: 172.31.47.147, server: _, request: "GET / HTTP/1.1", upstream: "http://unix:///var/run/puma/my_app.sock:/", host: "172.31.47.147"
自然地,我用谷歌搜索了我的错误,并找到了 this Whosebug post.
我已经尝试将评分最高的答案中的这些建议行添加到我的 puma.rb
bind "unix:///var/run/puma/my_app.sock"
pidfile "/var/run/puma/my_app.sock"
这根本没有引起任何变化。
我确保尝试了其他建议,包括直接查看 nginx 配置文件。我确实发现配置中没有设置上游。据我所知,部署管道的 nginx 方面是由 Elastic Beanstalk 自动化的,所以很明显我设置的其他东西一定是不正确的。
我发现在任何情况下我都无法使用 eb deploy
部署应用程序我只能通过每次创建一个新环境来进行更改。我已经无数次重新创建应用程序,尝试不同的设置、gems 和包的版本、不同的 ruby 版本...等等。总而言之,我仍然不能影响错误的改变,我什至不能得到一个新的错误!只是相同的 PG:ConnectionBad
或 502 bad gateway
取决于我是从控制台还是浏览器看。
根据我的谷歌搜索,我的印象是这在某些方面与 puma 有关,但 puma 对我来说有点像黑匣子。
我在这里感觉很迷茫,非常感谢您愿意分享的任何指导。欢迎从任何日志或文件中获取更多信息,我很乐意提供更多详细信息。提前致谢!
可能是 RDS 安全组,是否配置为到达您的 elb?
您也可以尝试克隆数据库,以确保它不确定旧数据库是否存在奇怪的数据库问题,然后尝试连接到该数据库。
所以这不会是一个很有帮助的答案,因为我从来没有解决过这个问题。不过我不想让这个线程挂起。
我最终只是创建了一个新的 rails 环境,重新添加了所有的 gem 并移植了我的 controllers/views/models/routes。一旦我这样做了,我就能够毫无问题地进行部署。
我可以确认问题不在于安全组或数据库本身。新 rails 应用程序能够毫无问题地访问 RDS 实例。
感谢大家的评论和帮助,非常感谢!