“无法连接到服务器:没有这样的文件或目录”在使用 beanstalk 部署 Rails 应用程序时

Posted

技术标签:

【中文标题】“无法连接到服务器:没有这样的文件或目录”在使用 beanstalk 部署 Rails 应用程序时【英文标题】:"Could not connect to server: No such file or directory" While deploying Rails app with beanstalk 【发布时间】:2015-05-18 04:12:26 【问题描述】:

在使用Rails 3.2.17 部署应用程序时,我们收到以下错误。

eb-commandprocessor.log

+ su -s /bin/bash -c 'leader_only bundle exec rake db:migrate' webapp
rake aborted!
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"?
/var/app/ondeck/config/environment.rb:5:in `<top (required)>'
Tasks: TOP => db:migrate => environment
(See full trace by running task with --trace) (ElasticBeanstalk::ActivityFatalError)
    at /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.1.0/gems/beanstalk-core-1.1/lib/elasticbeanstalk/activity.rb:189:in `rescue in exec'
    ...
caused by: command failed with error code 1: /opt/elasticbeanstalk/hooks/appdeploy/pre/12_db_migration.sh

这是我们的database.yml 配置

 production:
  adapter: postgresql
  database: <%= ENV['RDS_DB_NAME'] %>
  username: <%= ENV['RDS_USERNAME'] %>
  password: <%= ENV['RDS_PASSWORD'] %>
  host: <%= ENV['RDS_HOSTNAME'] %>
  port: <%= ENV['RDS_PORT'] %>

令人惊讶的是,我们能够启动 rails 控制台,并且我们还验证了上述所有环境变量都返回了正确的值。

还可以使用以下命令通过 psql 进行连接 psql -h RDS_HOSTNAME -d RDS_DB_NAME -U RDS_USERNAME

【问题讨论】:

我在这里遇到了同样的问题,但使用 Rails 4 运气好了吗? 这里有同样的问题。手动进行时也可以工作。正在努力... 【参考方案1】:

就我而言,问题来自于我删除了我的.elasticbeanstalk/optionsettings,因此未定义RACK_ENV,AWS 默认将其设置为production,这导致我的应用程序具有错误的数据库主机名。

我通过在/opt/elasticbeanstalk/hooks/appdeploy/pre/12_db_migration.sh 中添加echo 语句来显示RACK_ENV 并发现它是空的。

【讨论】:

以上是关于“无法连接到服务器:没有这样的文件或目录”在使用 beanstalk 部署 Rails 应用程序时的主要内容,如果未能解决你的问题,请参考以下文章

django.db.utils.OperationalError:无法连接到服务器:没有这样的文件或目录

在 spark 上使用集群和在本地使用并行操作有啥区别?

在哪里使用 CORBA 以及在哪里使用 SNMP 进行监控?

为啥在使用 unicode 时我不能在 :before :after 内容之后使用空格

在哪里使用 callable 以及在哪里使用 Runnable Interface?

在 Observable RxSwift 中使用 'asPromise()' 可以在 PromiseKit Promise 中使用吗?