AMAZON SUPPORT
Så jeg endte med at snakke med gutterne hos Amazon også efter David Wolevers svar. Bare hvis nogen af jer støder på dette indlæg igen. At bruge den interne server IP alene er ikke nok, det er dog en god start. Hvis du kører Ubuntu til din Postgresql-instans (helst Natty Narwhal), skal du sørge for at redigere filerne pg_hba.conf og postgresql.conf.
Du kan normalt finde disse to filer på:/etc/postgresql/8.4/main/(pg_hba.conf eller postgresql.conf)
Husk at vi bruger Postgresql 8.4 i vores stak, det viste sig at være den mest konsistente og solide version af Postgresql, der kørte på Natty Narwhal under vores tests.
For forskellige versioner af Postgresql (9.1, 9.0 osv..) er den mappe, som du kan finde disse to filer i, ikke den samme som anført ovenfor. Sørg for, at du kender den korrekte mappe til disse filer.
TRIN 1
Gå til Amazon Management Console og sørg for, at begge forekomster er under den samme sikkerhedsgruppe. Postgresql og Django bruger 5432 og 8000 som standard, så sørg for at have disse to porte åbne!
TRIN 2
(Gør dette på terminalen på postgresql-forekomsten)
sudo vim postgresql.conf
Tryk på "i" på dit tastatur for at begynde at foretage ændringer. Brug pil ned-tasten, indtil du støder på
LISTEN_ADDRESSES:'localhost'
Slip af med hash-tagget foran, og i stedet for 'localhost', tilføj den private IP for din postgresql-instans (du kan finde den private ip på din EC2-administrationskonsol) og du skal også tilføje 127.0.0.1.
EKSEMPEL:
LISTEN_ADDRESSES:'privat ip, 127.0.0.1'
Sørg for at adskille den private ip og den lokale værtsadresse med et komma og lade det hele stå under ét tilbud.
Når du har foretaget ændringerne, tryk på ESC og tryk på ZZ (to gange med bogstaver for at gemme ændringerne)
TRIN 3
sudo vim pg_hba.conf
Brug pil ned-tasten, indtil du støder på noget, der ser sådan ud:
Database administrativt login af UNIX sockets lokal alle postgres ident # TYPE DATABASE BRUGER CIDR-ADRESSE METODE # "local" er kun til Unix domæne socket forbindelser lokalt alle alle md5 # IPv4 lokale forbindelser:vært alle alle 127.0.0.1 /32 tillid # IPv6 lokale forbindelser:vært alle alle ::1/128 md5 lokal django_db django_login md5 vært replikering postgres 127.0.0.1/32 md5 vært replikering postgres ::1/128 md5
Endnu en gang skal du trykke på 'i' på dit tastatur og foretage ændringerne på det nøjagtigt som jeg har det ovenfor.
Du vil bemærke under IPv6, at jeg har django_db og django_login, skift det til navnet på din postgresql-database og dit brugerlogin, som du bruger til din postgresql-database.
Når du har foretaget ændringerne, tryk på ESC og tryk på ZZ (to gange med bogstaver for at gemme ændringerne)
TRIN 4 (Næsten færdig Hi5!)
Genstart postgresql-serveren ved at bruge denne kommando i terminalen:
sudo /etc/init.d/postgresql genstart
Tillykke! Serveren er oppe og køre, men der er et sidste trin.
TRIN 5
Tænd din Django EC2-instans, gå til din settings.py og se efter dette:
DATABASES ={ 'default':{ 'ENGINE':'django.db.backends.postgresql_psycopg2', 'NAME':'django_db', 'USER':'django_login', 'PASSWORD':'password ', 'HOST':'', # Indstil til tom streng for localhost. Bruges ikke med sqlite3. 'PORT':'', # Indstil til tom streng som standard. Bruges ikke med sqlite3. }
Under 'HOST':' ' skal du ændre det til 'HOST':'uanset hvad den private IP-adresse for Postgresql-instansen er'
Gem ændringerne. Åbn en terminal og find den mappe, hvor din manage.py-fil er. Når du er i den mappe, skal du køre følgende kommando:./manage.py syncdb
Disse vil oprette alle de nødvendige tabeller til de modeller, du har oprettet i Django. Tillykke, du har oprettet et link mellem din Database-instans og din Django-instans.
Hvis du har spørgsmål, vil jeg være mere end glad for at hjælpe! Efterlad en kommentar nedenfor, så vender jeg tilbage til dig ASAP! :)