因此,我有一个几个月前通过AWS Elastic Beanstalk构建和部署的Rails应用程序。该项目被暂停,因此我终止了环境,希望当我们返回该项目时能够重新部署。
尽管我的应用程序仍可以在本地开发环境上正常运行,但无法将其部署。我的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的配置不正确,因为尝试访问服务器会返回:
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 stackoverflow post.
我尝试将这些建议的行从最受好评的答案添加到我的puma.rb
bind "unix:///var/run/puma/my_app.sock"
pidfile "/var/run/puma/my_app.sock"
这根本没有引起任何变化。
我确保尝试其他建议,包括直接查看nginx配置文件。我确实发现配置中没有上游设置。据我所知,Elastic Beanstalk自动化了部署管道的nginx方面,因此很明显我设置的其他东西一定不正确。
我发现在任何情况下我都无法使用eb deploy
来部署应用程序,我只能通过每次创建一个新环境来进行更改。我已经无数次地重新创建了该应用程序,尝试了不同的设置,宝石和包裹的版本,不同的红宝石版本...等等。总而言之,我仍然无法影响错误的更改,甚至无法获得新的错误!只是相同的PG:ConnectionBad
或502 bad gateway
,具体取决于我是从控制台还是浏览器查看。
从谷歌搜索中,我一直感觉到这在某些方面与彪马有关,但是彪马对我来说有点黑匣子。
我在这里感到非常迷茫,非常感谢您愿意分享的任何指导。欢迎从任何日志或文件中索取更多信息,我很乐意提供更多详细信息。预先感谢!
答案 0 :(得分:0)
可能是RDS安全组,是否已配置为可以到达您的肘部?
您还可以尝试克隆数据库,以确保它不确定旧数据库的奇怪问题,然后尝试连接到该数据库。
答案 1 :(得分:0)
所以这将不是一个非常有用的答案,因为我从未解决过该问题。我不想只是让这个线程挂起。
我最终只是创建了一个新的Rails环境,重新添加了所有的gem,并移植了我的控制器/视图/模型/路线。一旦这样做,我就可以毫无问题地进行部署。
我可以确认问题不在于安全组或数据库本身。新鲜的Rails应用程序能够毫无问题地访问RDS实例。
谢谢大家的评论和帮助,非常感谢!