sql >> Database >  >> RDS >> PostgreSQL

Django en PostgreSQL instellen op twee verschillende EC2-instanties

AMAZON-ONDERSTEUNING

Dus eindigde ik ook met de jongens van Amazon te praten na het antwoord van David Wolever. Voor het geval iemand van jullie dit bericht nog eens tegenkomt. Het gebruik van de interne server IP alleen is niet genoeg, het is echter wel een goed begin. Als u Ubuntu gebruikt voor uw Postgresql-instantie (bij voorkeur Natty Narwhal), zorg er dan voor dat u de bestanden pg_hba.conf en postgresql.conf bewerkt.

U kunt deze twee bestanden meestal vinden op:/etc/postgresql/8.4/main/(pg_hba.conf of postgresql.conf)

Let wel, we gebruiken Postgresql 8.4 in onze stapel, het bleek de meest consistente en solide versie van Postgresql te zijn die tijdens onze tests op Natty Narwhal draaide.

Voor verschillende versies van Postgresql (9.1, 9.0 etc..) is de map waarin u deze twee bestanden kunt vinden niet dezelfde als hierboven vermeld. Zorg ervoor dat u de juiste map naar deze bestanden kent.

STAP 1

Ga naar de Amazon Management Console en zorg ervoor dat beide instanties zich onder dezelfde beveiligingsgroep bevinden. Postgresql en Django gebruiken standaard 5432 en 8000, dus zorg ervoor dat je die twee poorten open hebt staan!

STAP 2

(Doe dit op de terminal op de postgresql-instantie)

sudo vim postgresql.conf

Druk op "i" op uw toetsenbord om wijzigingen aan te brengen. Gebruik de pijl-omlaag totdat je

. tegenkomt

LISTEN_ADDRESSES:'localhost'

Verwijder de hash-tag aan de voorkant en voeg in plaats van 'localhost' het privé-IP van uw postgresql-instantie toe (u kunt het privé-ip vinden op uw EC2-beheerconsole) en je moet ook 127.0.0.1 toevoegen.

VOORBEELD:

LISTEN_ADDRESSES:'privé-ip, 127.0.0.1'

Zorg ervoor dat u het privé-ip en het lokale hostadres scheidt door een komma en laat het allemaal onder één aanhalingsteken staan.

Nadat u de wijzigingen heeft aangebracht, drukt u op ESC en drukt u op ZZ (tweemaal in hoofdletters om de wijzigingen op te slaan)

STAP 3

sudo vim pg_hba.conf

Gebruik de pijl-omlaag totdat je iets tegenkomt dat er zo uitziet:

           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

Druk nogmaals op 'i' op je toetsenbord en breng de wijzigingen aan precies zoals ik het hierboven heb.

U zult merken dat onder IPv6 ik django_db en django_login heb, verander het in de naam van uw postgresql-database en uw gebruikerslogin die u respectievelijk voor uw postgresql-database gebruikt.

Nadat u de wijzigingen heeft aangebracht, drukt u op ESC en drukt u op ZZ (tweemaal in hoofdletters om de wijzigingen op te slaan)

STAP 4 (Bijna klaar Hi5!)

Start de postgresql-server opnieuw met dit commando in de terminal:

sudo /etc/init.d/postgresql herstart

Gefeliciteerd! De server is actief, maar er is nog een laatste stap.

STAP 5

Start uw Django EC2-instantie op, ga naar uw settings.py en zoek dit op:

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

Wijzig het onder 'HOST':' ' in 'HOST':'whatever the private IP of the Postgresql instance is'

Sla de wijzigingen op. Open een terminal en zoek de map waar uw manage.py-bestand zich bevindt. Als u eenmaal in die map bent, voert u de volgende opdracht uit:./manage.py syncdb

Hiermee worden alle benodigde tabellen gemaakt voor de modellen die u in Django hebt gemaakt. Gefeliciteerd, u hebt met succes een koppeling gemaakt tussen uw database-instantie en uw Django-instantie.

Als je vragen hebt, help ik je graag verder! Laat hieronder een reactie achter en ik neem zo snel mogelijk contact met je op! :)



  1. Gedeeltelijke index niet gebruikt in ON CONFLICT-clausule tijdens het uitvoeren van een upsert in Postgresql

  2. Procedure verwacht een parameter die niet is opgegeven

  3. Een PostgreSQL-reeks naar een veld maken (wat niet de ID van de record is)

  4. PostgreSQL-server wil niet afsluiten op Lion (Mac OS 10.7)