SOSTEGNO AMAZON
Quindi ho finito per parlare anche con i ragazzi di Amazon dopo la risposta di David Wolever. Nel caso qualcuno di voi si imbattesse di nuovo in questo post. Il solo utilizzo dell'IP del server interno non è sufficiente, è comunque un buon inizio. Se stai eseguendo Ubuntu per la tua istanza Postgresql (preferibilmente Natty Narwhal), assicurati di modificare i file pg_hba.conf e postgresql.conf.
Di solito puoi trovare questi due file in:/etc/postgresql/8.4/main/(pg_hba.conf o postgresql.conf)
Intendiamoci, stiamo usando Postgresql 8.4 nel nostro stack, si è rivelata la versione più coerente e solida di Postgresql da girare su Natty Narwhal durante i nostri test.
Per diverse versioni di Postgresql (9.1, 9.0 ecc..) la directory in cui puoi trovare questi due file non è la stessa di quella sopra elencata. Assicurati di conoscere la directory corretta per questi file.
PASSAGGIO 1
Vai ad Amazon Management Console e assicurati che entrambe le istanze rientrino nello stesso gruppo di sicurezza. Postgresql e Django usano 5432 e 8000 per impostazione predefinita, quindi assicurati di avere queste due porte aperte!
PASSAGGIO 2
(Esegui questa operazione sul terminale nell'istanza postgresql)
sudo vim postgresql.conf
Premi "i" sulla tastiera per iniziare ad apportare modifiche. Usa il tasto freccia giù fino a trovare
LISTEN_ADDRESSES:'localhost'
Elimina l'hashtag in primo piano e, invece di 'localhost', aggiungi l'IP privato della tua istanza postgresql (puoi trovare l'ip privato sulla tua console di gestione EC2) e tu devi aggiungere anche 127.0.0.1.
ESEMPIO:
LISTEN_ADDRESSES:'ip privato, 127.0.0.1'
Assicurati di separare l'ip privato e l'indirizzo dell'host locale con una virgola e di lasciare tutto sotto una virgoletta.
Dopo aver apportato le modifiche, premi ESC e premi ZZ (due volte in maiuscolo per salvare le modifiche)
PASSAGGIO 3
sudo vim pg_hba.conf
Usa il tasto freccia giù finché non trovi qualcosa che assomiglia a questo:
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
Ancora una volta, premi "i" sulla tastiera e apporta le modifiche esattamente come ho fatto sopra.
Noterai sotto IPv6, ho django_db e django_login, cambialo con il nome del tuo database postgresql e il tuo login utente che usi rispettivamente per il tuo database postgresql.
Dopo aver apportato le modifiche, premi ESC e premi ZZ (due volte in maiuscolo per salvare le modifiche)
PASSAGGIO 4 (Ciao quasi fatto!)
Riavvia il server postgresql usando questo comando nel terminale:
sudo /etc/init.d/postgresql restart
Congratulazioni! Il server è attivo e funzionante, tuttavia c'è un ultimo passaggio.
PASSAGGIO 5
Avvia la tua istanza Django EC2, vai su settings.py e cerca questo:
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.
}
In 'HOST':' ', cambialo in 'HOST':'qualunque sia l'IP privato dell'istanza Postgresql'
Salva le modifiche. Apri un terminale e trova la directory in cui si trova il tuo file manage.py. Una volta che sei in quella directory, esegui il seguente comando:./manage.py syncdb
Questi creeranno tutte le tabelle necessarie per i modelli che hai creato in Django. Congratulazioni, hai creato correttamente un collegamento tra la tua istanza del database e la tua istanza Django.
Se hai domande, sarò più che felice di aiutarti! Lascia un commento qui sotto e ti risponderò al più presto! :)