1

私は現在Amazon RDSでPostgreSQLデータベースをセットアップしています。データベースは、Railsアプリケーションを実行するElastic Beanstalkサーバーに接続されており、Railsアプリケーションは正常に動作します(本番サイトではデータベースを正常に変更できます)。また、SQLワークベンチ上のデータベースを正常に表示できます。生産現場で行った変更がデータベースに反映されていることがわかります)。EC2経由でAmazon PostgreSQL RDSに接続できません

私はデータベースが正しく動作していること、そして弾力のあるbeanstalkサーバーがうまく接続していることを知っています。また、私のRailsアプリケーションも正しく接続しています。

私は私のEC2インスタンス(ノート経由でデータベースに接続しようとすると、ただし、このインスタンスは私のEBおよびRDSインスタンスとは異なる地域(オハイオ州)である(N.バージニア州)、私はこのエラーを取得:

psql: 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/run/postgresqlが存在するが、そのファイルが存在しません。私は、ルートからそのファイルを探してみました、そしてそれはどこにも存在していないことが判明。

私がする必要があるので、これは問題ですリモートでデータベースをシードでき、rake db:seedをコンソールから実行しようとすると、このエラーが発生します。 ja実稼働環境でレールコンソールを実行し、データベースの一部であるものを表示しようとします。

これは私のconfig/database.ymlファイルです:

default: &default 
    adapter: sqlite3 
    pool: 5 
    timeout: 5000 

development: 
    <<: *default 
    database: db/development.sqlite3 

test: 
    <<: *default 
    database: db/test.sqlite3 

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

これは、EBは、展開時にPGのデータベースに接続するために知っている方法です。

EC2のパブリックIPからのPostgreSQL接続を受け入れるように私のRDSのセキュリティルールを編集しようとしましたが、動作していないようです。

誰もがこれを手伝ってくれますか?

編集:

[OK]を、私はちょうど罰金サーバーを指定するオプションでpsqlコマンドを使用してリモート・データベースに接続することができます。私は単純なクエリを実行することによってそれをテストし、接続が確立されていると確信しています。私は現在、サーバーに自動的に接続するように指示する方法は不明です。

+0

どのように接続しますか?正確なコマンドを入力します。教育的な推測:あなたは接続するホストを指定しません。 – zerkms

+0

@zerkms投稿を編集しました。エラスティックBeanstalkはデプロイ時にサーバに接続します – Tetramputechture

+0

'psql'コマンドはどこにありますか? – zerkms

答えて

1

アプリケーションがローカルホスト上のPostgreSQLに接続しようとしているようです。あなたのconfig/database.ymlファイルが環境変数RDS_HOSTNAMEを探しているという点で正しいと思われます - 私の最高の推測はあなたがそれを設定していないということで、あなたのlocalhostは空であるのでデフォルトにしています。

この環境変数を設定するには、そこに記載されている他の項目(データベース、ユーザー、パス&ポート)を設定する必要があります。

This StackOverflow answerは、Elastic Beanstalkの環境変数を設定する方法を説明しています。

+0

アプリケーションはサーバーに接続しても問題ありません。私はSSH経由でEBに入って変数をチェックし、それらが設定されています。この問題は、EBにあるとは思われませんが、データベースをシードするEC2インスタンスを取得しているようです(RAILS_ENV = production rails db:seed'を実行しようとすると、接続できないというエラーが表示されます) – Tetramputechture

+0

同じEC2サーバー上のアプリケーションディレクトリ? 'env'を実行すると、同じ環境変数が表示されますか? –

+0

EC2インスタンスから 'env'を直接実行すると、それらの変数は定義されません。しかし、EBインスタンスから 'eb ssh 'を介して' env'を実行すると、それらの変数が定義されます。 – Tetramputechture

0

私は

eb ssh

var/app/current

rails db:seed

を実行しているに位置して私のアプリのディレクトリに行くのを経由して私のEBのインスタンスにアクセスすることで、この問題を解決しました

私の値を正しくプロダクションデータベースにシードしましたseeds.rb

関連する問題