0

新しい Rails アプリを Bitnami/Ubuntu/Virtual Server にデプロイしようとしています。私はリモートで、SSH ターミナルを使用しています。

Capistrano を使用して deploy:update を制限することに成功しました。私のソースは github に送られ、Capistrano はそれをサーバーに置きます。

したがって、サーバー上に次のディレクトリがあります。

/opt/bitnami/projects/ndeavor/releases/20130306180756

サーバーでは、PostgreSQL スタックも実行されています。Postgresql ユーザーと空のデータベースを作成しました。次のステップは、SSH コンソールを使用して次のコマンドを実行することだと思います。

bitnami@linux:/opt/bitnami/projects/ndeavor/releases/20130306180756$  rake RAILS_ENV=production db:schema:load 

質問 1 = それは正しい次のステップですか?

そのコマンドを実行すると、次のようになります。

could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

質問 2 = どうすれば Rake に PostgreSQL ソケットを見つけさせることができますか?

次のようなものを database.yml ファイルに入れることができます。

 socket: /var/pgsql_socket

しかし、正しいエントリがどうあるべきかわかりません

ご協力いただきありがとうございます!!

更新1

また、database.yml ファイルを次のようにしてみました。

production:
adapter: postgresql
encoding: unicode
database: ndeavor_production
pool: 5
username: (user name)
password: (password)
socket: /var/run/postgresql

しかし、同じエラーが発生します。

Is the server running locally and accepting
connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

少なくとも Unix ドメインソケット "/var/run/postgresql" を要求しないのはなぜですか??

UPDATE2

私はこれを見つけました:

「私は、postgresql.conf ファイルの unix_socket_directory を /var/run/postgresql と宣言することで問題を解決しました。標準ビルドでは、共通の場所が必要だと思われますか?

変更されていない PG ソースからビルドする場合、デフォルトのソケットの場所は確かに /tmp です。ただし、Debian および関連するディストリビューションは、これが何らかのディストリビューション標準またはその他に違反していると感じているため、ソース コードを変更して、デフォルトの場所を /var/run/postgresql にします。したがって、使用しているビルドによって異なります。」

しかし、postgresql.conf ファイルを変更する必要があるのか​​、Rails database.yml ファイルを変更する必要があるのか​​わかりません。

更新3

/var/run/postgresql ディレクトリを調べたところ、空です。

.s.PGSQL.5432 の場所がわかりません

4

1 に答える 1

0

Bob が指摘したように、ホストとポートを指定すると問題を解決できます。彼はこれについて詳しく説明していないので、私が特定したいと思います。

デフォルトのポートは 5432 で、デフォルトの「ホスト」はソケットが必要な場所へのパスです。ポートは常に数値ですが、ホストは、ネットワーク ホストまたはソケットを含むディレクトリへの任意の libpq 接続に対して設定できます。たとえば、psql を使用して接続します。

psql -h /tmp -p 5432 -U chris mydb

これは /tmp/.s.PGSQL.5432 ソケット経由で接続します。現在、Ruby は多少異なりますが、pg gem は libpq を使用しているため、同じように動作するはずです。

ソケットがどこにあるのかわからない場合、次に試すのは明らかにネットワーク アドレス、特に localhost です。

于 2013-05-05T07:27:42.980 に答える