sql >> Databasteknik >  >> RDS >> PostgreSQL

Konfigurera Django och PostgreSQL på två olika EC2-instanser

AMAZON SUPPORT

Så det slutade med att jag pratade med killarna på Amazon också efter David Wolevers svar. Bara ifall någon av er stöter på det här inlägget igen. Att bara använda den interna serverns IP är inte tillräckligt, det är dock en bra början. Om du kör Ubuntu för din Postgresql-instans (helst Natty Narwhal), se till att du redigerar filerna pg_hba.conf och postgresql.conf.

Du kan vanligtvis hitta dessa två filer på:/etc/postgresql/8.4/main/(pg_hba.conf eller postgresql.conf)

Tänk på att vi använder Postgresql 8.4 i vår stack, det visade sig vara den mest konsekventa och solida versionen av Postgresql som kördes på Natty Narwhal under våra tester.

För olika versioner av Postgresql (9.1, 9.0 etc..) är katalogen som du kan hitta dessa två filer till inte densamma som ovan. Se till att du känner till rätt katalog för dessa filer.

STEG 1

Gå till Amazon Management Console och se till att båda instanserna är under samma säkerhetsgrupp. Postgresql och Django använder 5432 och 8000 som standard, så se till att du har dessa två portar öppna!

STEG 2

(Gör detta på terminalen på postgresql-instansen)

sudo vim postgresql.conf

Tryck på "i" på ditt tangentbord för att börja göra ändringar. Använd nedåtpilen tills du kommer över

LISTEN_ADDRESSES:'localhost'

Bli av med hash-taggen i fronten, och istället för 'localhost', lägg till den privata IP-adressen för din postgresql-instans (du kan hitta den privata IP:n på din EC2-hanteringskonsol) och du måste även lägga till 127.0.0.1.

EXEMPEL:

LISTEN_ADDRESSES:'privat ip, 127.0.0.1'

Se till att du separerar den privata ip:n och den lokala värdadressen med ett kommatecken och lämnar allt under en offert.

När du har gjort ändringarna trycker du på ESC och trycker på ZZ (två gånger med versaler för att spara ändringarna)

STEG 3

sudo vim pg_hba.conf

Använd nedåtpilen tills du stöter på något som ser ut så här:

           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

Återigen, tryck på 'i' på ditt tangentbord och gör ändringarna på det exakt som jag har det ovan.

Du kommer att märka under IPv6, jag har django_db och django_login, ändra det till namnet på din postgresql-databas respektive din användarinloggning som du använder för din postgresql-databas.

När du har gjort ändringarna trycker du på ESC och trycker på ZZ (två gånger med versaler för att spara ändringarna)

STEG 4 (Nästan klar Hi5!)

Starta om postgresql-servern med detta kommando i terminalen:

sudo /etc/init.d/postgresql omstart

grattis! Servern är igång, men det finns ett sista steg.

STEG 5

Starta din Django EC2-instans, gå till din settings.py och leta efter detta:

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

Under 'HOST':' ' ändrar du det till 'HOST':'oavsett vad den privata IP-adressen för Postgresql-instansen är'

Spara ändringarna. Öppna en terminal och hitta katalogen där din manage.py-fil finns. När du är i den katalogen kör följande kommando:./manage.py syncdb

Dessa kommer att skapa alla nödvändiga tabeller för modellerna du skapade i Django. Grattis, du har framgångsrikt skapat en länk mellan din databasinstans och din Django-instans.

Om du har några frågor hjälper jag dig mer än gärna! Lämna en kommentar nedan så återkommer jag till dig ASAP! :)



  1. Kan jag lagra binär sträng i CLOB-kolumnen

  2. Varför lära sig Cassandra med Hadoop?

  3. alembic util kommandofel kan inte hitta identifierare

  4. Hur REPLICATE()-funktionen fungerar i SQL Server (T-SQL)