4

こんにちはStackOverFlowers:)これまで、DjangoバックエンドとPostgreSQLデータベースを同じマイクロEC2インスタンスで実行してきました。

2つのEC2インスタンスをセットアップしました。1つはdjangoバックエンドを使用し、もう1つはpgadminIIを使用して管理するPostgreSQLデータベースを使用します。両方のインスタンスは同じセキュリティグループを使用し、すべて同じポートを開いています。Elastic IPをDjangoインスタンスに接続し、別のElasticIPをPostgresqlインスタンスに接続しました。

これで、settings.pyで、「HOST」をPostgreSQLインスタンスのアドレスに変更する必要があることがわかりました。しかし、私は何を置くべきかよくわかりません。PostgreSQLインスタンスのElasticIPを配置しますか?

私はいくつかの調査を行いましたが、多くの情報源によると、PostgreSQLインスタンスの内部サーバーのIPアドレスを入力する必要があります。その場合、内部サーバーのIPアドレスを見つけて、それを「ホスト」に入力するにはどうすればよいですか?わかりやすくするために、以下のsettings.pyコードをコピーして貼り付けました。

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2', 
'NAME': 'django_db', 
'USER': 'django_login',
'PASSWORD': 'password', 
'HOST': '', # Set to empty string for localhost. Not used with sqlite3.
'PORT': '', # Set to empty string for default. Not used with sqlite3.
}

助けてくれてありがとう、私が十分にはっきりしていないならば、私があなたと他の人のためにそれをよりはっきりさせることができるようにコメントして私に知らせてください:)

4

2 に答える 2

8

アマゾンサポート

それで、David Woleverの返事の後、私はAmazonの人たちとも話をすることになりました。万が一、この投稿に再び出くわした場合に備えて。内部サーバーのIPを単独で使用するだけでは不十分ですが、それは良いスタートです。Postgresqlインスタンス(できればNatty Narwhal)用にUbuntuを実行している場合は、必ずpg_hba.confファイルとpostgresql.confファイルを編集してください。

これらの2つのファイルは通常、/ etc / postgresql / 8.4 / main /(pg_hba.confまたはpostgresql.conf)にあります。

スタックでPostgresql8.4を使用していることに注意してください。これは、テスト中にNattyNarwhalで実行するPostgresqlの最も一貫性のある堅実なバージョンであることが証明されました。

異なるバージョンのPostgresql(9.1、9.0など)の場合、これら2つのファイルを見つけることができるディレクトリは上記と同じではありません。これらのファイルの適切なディレクトリを知っていることを確認してください。

ステップ1

Amazon Management Consoleに移動し、両方のインスタンスが同じセキュリティグループの下にあることを確認します。PostgresqlとDjangoはデフォルトで5432と8000を使用するため、これら2つのポートが開いていることを確認してください。

ステップ2

(postgresqlインスタンスのターミナルでこれを行います)

sudo vim postgresql.conf

キーボードの「i」を押して、変更を開始します。出くわすまで下矢印キーを使用します

LISTEN_ADDRESSES:'localhost'

前面のハッシュタグを削除し、「localhost」の代わりに、postgresqlインスタンスのプライベートIPを追加し(プライベートIPはEC2管理コンソールにあります)、 127.0.0.1も追加する必要があります。

例:

LISTEN_ADDRESSES:'プライベートIP、127.0.0.1'

プライベートIPとローカルホストアドレスをコンマで区切り、すべてを1つの引用符で囲んでください

変更を加えたら、ESCを押してZZを押します(変更を保存するには大文字で2回押します)

ステップ3

sudo vim pg_hba.conf

次のようなものが見つかるまで、下矢印キーを使用します。

           Database administrative login by UNIX sockets
  local   all         postgres                          ident

  # TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD

  # "local" is for Unix domain socket connections only
  local   all         all                               md5
  # IPv4 local connections:
  host    all         all         127.0.0.1/32          trust
  # IPv6 local connections:
  host    all         all         ::1/128               md5
  local   django_db   django_login                      md5
  host    replication postgres    127.0.0.1/32          md5
  host    replication postgres    ::1/128               md5

もう一度、キーボードの「i」を押して、上記の方法で変更を加えます。

IPv6では、django_dbとdjango_loginがあり、それぞれpostgresqlデータベースの名前とpostgresqlデータベースに使用するユーザーログインに変更します。

変更を加えたら、ESCを押してZZを押します(変更を保存するには大文字で2回押します)

ステップ4(ほぼ完了したHi5!)

ターミナルで次のコマンドを使用して、postgresqlサーバーを再起動します。

sudo /etc/init.d/postgresql restart

おめでとうございます!サーバーは稼働していますが、最後のステップが1つあります。

ステップ5

Django EC2インスタンスを起動し、settings.pyに移動して、これを探します。

 DATABASES = {
 'default': {
 'ENGINE': 'django.db.backends.postgresql_psycopg2', 
 'NAME': 'django_db', 
 'USER': 'django_login',
 'PASSWORD': 'password', 
 'HOST': '', # Set to empty string for localhost. Not used with sqlite3.
 'PORT': '', # Set to empty string for default. Not used with sqlite3.
 }

'HOST':''の下で、'HOST':'に変更します。PostgresqlインスタンスのプライベートIPが何であれ'

変更を保存します。ターミナルを開き、manage.pyファイルがあるディレクトリを見つけます。そのディレクトリに移動したら、次のコマンドを実行します:./manage.py syncdb

これらは、Djangoで作成したモデルに必要なすべてのテーブルを作成します。おめでとうございます。データベースインスタンスとDjangoインスタンスの間にリンクが正常に作成されました。

ご不明な点がございましたら、お気軽にお問い合わせください。以下にコメントを残してください。できるだけ早くご連絡いたします。:)

于 2012-11-17T18:45:36.427 に答える
4

PostgresインスタンスにエラスティックIPは必要ありません。内部IPを使用するだけです。内部IPは、管理コンソールから、またはを実行することで利用できますifconfig

于 2012-11-16T20:58:51.473 に答える