“无法连接到服务器:没有这样的文件或目录”在使用 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:无法连接到服务器:没有这样的文件或目录
在哪里使用 CORBA 以及在哪里使用 SNMP 进行监控?
为啥在使用 unicode 时我不能在 :before :after 内容之后使用空格
在哪里使用 callable 以及在哪里使用 Runnable Interface?
在 Observable RxSwift 中使用 'asPromise()' 可以在 PromiseKit Promise 中使用吗?