PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Einrichten von Django und PostgreSQL auf zwei verschiedenen EC2-Instanzen

AMAZON-UNTERSTÜTZUNG

Also habe ich nach David Wolevers Antwort auch mit den Jungs von Amazon gesprochen. Nur für den Fall, dass jemand von euch diesen Beitrag noch einmal findet. Die Verwendung der internen Server-IP allein reicht nicht aus, ist aber ein guter Anfang. Wenn Sie Ubuntu für Ihre Postgresql-Instanz ausführen (vorzugsweise Natty Narwhal), stellen Sie sicher, dass Sie die Dateien pg_hba.conf und postgresql.conf bearbeiten.

Sie finden diese beiden Dateien normalerweise unter:/etc/postgresql/8.4/main/(pg_hba.conf oder postgresql.conf)

Wohlgemerkt, wir verwenden Postgresql 8.4 in unserem Stack, es hat sich während unserer Tests als die konsistenteste und solideste Version von Postgresql erwiesen, die auf Natty Narwhal ausgeführt werden konnte.

Für verschiedene Versionen von Postgresql (9.1, 9.0 usw.) ist das Verzeichnis, in dem Sie diese beiden Dateien finden können, nicht das gleiche wie oben aufgeführt. Stellen Sie sicher, dass Sie das richtige Verzeichnis für diese Dateien kennen.

SCHRITT 1

Gehen Sie zur Amazon Management Console und stellen Sie sicher, dass sich beide Instanzen in derselben Sicherheitsgruppe befinden. Postgresql und Django verwenden standardmäßig 5432 und 8000, stellen Sie also sicher, dass diese beiden Ports geöffnet sind!

SCHRITT 2

(Machen Sie dies auf dem Terminal der postgresql-Instanz)

sudo vim postgresql.conf

Drücken Sie "i" auf Ihrer Tastatur, um Änderungen vorzunehmen. Verwenden Sie die Pfeiltaste nach unten, bis Sie auf

stoßen

LISTEN_ADDRESSES:'lokaler Host'

Entfernen Sie das Hash-Tag im Vordergrund und fügen Sie anstelle von „localhost“ die private IP Ihrer Postgresql-Instanz hinzu (Sie finden die private IP auf Ihrer EC2-Verwaltungskonsole) und Sie müssen auch 127.0.0.1 hinzufügen.

BEISPIEL:

LISTEN_ADDRESSES:'private IP, 127.0.0.1'

Stellen Sie sicher, dass Sie die private IP-Adresse und die lokale Host-Adresse durch ein Komma trennen und alles unter einem Anführungszeichen lassen.

Nachdem Sie die Änderungen vorgenommen haben, drücken Sie ESC und ZZ (zweimal in Großbuchstaben, um die Änderungen zu speichern)

SCHRITT 3

sudo vim pg_hba.conf

Verwenden Sie die Pfeiltaste nach unten, bis Sie auf etwas stoßen, das so aussieht:

           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

Drücken Sie noch einmal "i" auf Ihrer Tastatur und nehmen Sie die Änderungen genau so vor, wie ich es oben habe.

Sie werden feststellen, dass ich unter IPv6 django_db und django_login habe, ändern Sie es in den Namen Ihrer Postgresql-Datenbank und Ihren Benutzernamen, den Sie für Ihre Postgresql-Datenbank verwenden.

Nachdem Sie die Änderungen vorgenommen haben, drücken Sie ESC und ZZ (zweimal in Großbuchstaben, um die Änderungen zu speichern)

SCHRITT 4 (Fast fertig Hi5!)

Starten Sie den Postgresql-Server mit diesem Befehl im Terminal neu:

sudo /etc/init.d/postgresql neu starten

Herzlichen Glückwunsch! Der Server ist eingerichtet und läuft, aber es gibt noch einen letzten Schritt.

SCHRITT 5

Starten Sie Ihre Django EC2-Instanz, gehen Sie zu Ihrer settings.py und suchen Sie nach:

 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.
 }

Ändern Sie es unter „HOST“:„ “ in „HOST“:„was auch immer die private IP der Postgresql-Instanz ist“

Speichern Sie die Änderungen. Öffnen Sie ein Terminal und suchen Sie das Verzeichnis, in dem sich Ihre Datei manage.py befindet. Führen Sie in diesem Verzeichnis den folgenden Befehl aus:./manage.py syncdb

Diese erstellen alle notwendigen Tabellen für die Modelle, die Sie in Django erstellt haben. Herzlichen Glückwunsch, Sie haben erfolgreich eine Verknüpfung zwischen Ihrer Datenbankinstanz und Ihrer Django-Instanz erstellt.

Bei Fragen stehe ich Ihnen gerne zur Verfügung! Hinterlasse unten einen Kommentar und ich melde mich so schnell wie möglich bei dir! :)