Heroku

2013-06-11 33 views
10

'u kullanırken Django'da yerel geliştirme için postgresql veritabanının yapılandırılması Benzer sorunlara bağlı olarak buralarda yüzen birçok soru olduğunu biliyorum, ancak henüz ele alınmamış belirli bir lezzete sahibim. Yerel postgresql veritabanımı oluşturmaya çalışıyorum, böylelikle Heroku'ya itmeye ek olarak yerel gelişim yapabilirim.Heroku

'#DATABASES = {'default': dj_database_url.config(default='postgres://fooname:[email protected]/dbname')}' 

Bu hata yapılandırılmamış "MOTORU" çözer:

I (Ben biraz daha eskimiş olduğunu düşünüyorum) örneğin bunun nasıl temel cevapları, bulduk. Ben 'piton manage.py syncdb' çalıştırdığınızda, ancak aşağıdaki hatayı alıyorum:

'OperationalError: FATAL: password authentication failed for user "foo" 
FATAL: password authentication failed for user "foo"' 

Bu kullanıcı adı akla gelebilecek tüm kombinasyonları için olur/geçmektedir. Yani benim ubuntu kullanıcı adı/pass, benim heroku kullanıcı adı/pass, vb Ayrıca bu sadece Heroku bileşeni çıkarmak ve öğretici takip ederken postgresql kullanıyormuş gibi yerel olarak inşa etmeye çalışırsanız bu olur. Henüz bir veritabanım olmadığı için, kullanıcı adı/şifre değerleri ne anlama geliyor? Sorun tam olarak mı, önce bir veritabanı oluşturmam gerekiyor mu? Öyleyse nasıl? Yeni db canlı, nasıl erisebilirsin django ederdi Should I have my Postgres directory right next to my project folder? If so, how?

Ama bunu olmadığı varsayılır: Ben süreç burada özetlenen kullanarak Heroku gelen db alabilir biliyorum Bir yan not olarak

ve aynı kullanıcı/pass sorunlarına sahip olur muydu?

Teşekkürler bir demet.

+0

Tüm 'settings.py' iletinizi gönderir misiniz? –

+0

Hatırladığım gibi, nix OS'leri için, en az kullanıcı için postgres (DB) mesajını kullanabilmek için "postgres" ("postgres") adında bir başlangıç ​​yapmış olmanız gerekir. PG ile olan deneyimim Win, Ubunru ve CentOS ile sınırlıdır. Pg_ctl durumunu yürütmeyi deneyin. Sonra işletim sisteminizin Postgres'e TCP protokolü üzerinden çağrı kabul edip etmediğini görün; daha sonra kabul edilebilir adresler için pgg.conf yapılandırmasını postgres onaylayın. Ve bunun gibi. En basit yol Google'a sormaktır: "PostgreSQL" [YourOSName] Ve evet, python ile diğer DBMS'lerde olduğu gibi PG ile hiçbir ilişki yok. – Abelisto

cevap

18

Yüklü postalarınızın kurulu olduğu varsayılırsa, pgadmin veya psql ile bağlanın ve yeni bir kullanıcı oluşturun. Ardından yeni bir veritabanı oluşturun ve yeni kullanıcınızla birlikte sahip olun. Psql aracılığıyla yeni kullanıcı ile veritabanına bağlanabildiğinizden emin olun. Daha sonra, virtualenv'inizin bin klasöründeki bir pos parametresi dosyasında bir env değişkeni kurmanız ve kaydetmeniz gerekir.

export DATABASE_URL='postgres://{{username}}:{{password}}@localhost:5432/{{database}}' 

Sadece bir not: sizin postactivate bu değeri ekleyerek şey yapmaz İşte veritabanı için ne var. Dosya kaydedildikten sonra çalışmaz. Bunu, $ komut isteminde çalıştırmanız ya da virtualenv'inizi devre dışı bırakmanız ve aktif hale getirmeniz gerekir.

Kişisel settings.py bu env var itibaren okumalısınız:

DATABASES = {'default': dj_database_url.config()} 

Ardından dağıtırken üretim veritabanını kullanmak için kendi CLI aracı ile Heroku yapılandırır. Bir şey gibi: Eğer üretim veritabanı için gerekenleri bu değer tam olarak nasıl anlamaya gerekiyorsa

heroku config:set DATABASE_URL={{production value here}} 

,

sizi (siz Heroku en CLI aracı yüklü yoksa, bunu yapmak gerekir) heroku'nun postgresql alt etki alanına (bu yazı yazıldığı sırada, https://postgres.heroku.com/) giriş yaparak ve listeden db'yi seçerek ve "Bağlantı Ayarları: URL" değerine bakarak onu alabilirsiniz.

Bu şekilde, aynı settings.py değeriniz hem yerel hem de üretim için çalışır ve kullanıcı adlarınız/şifrelerinizin sürüm denetimi dışında kalmasını sağlar. Onlar sadece env yapılandırma değerleridir.

+0

Yardımın için teşekkürler David. Aşağıdaki ilk adımı yapabildim: http://www.cyberciti.biz/faq/howto-add-postgresql-user-account/. Env değişkeni ayarlanması, ne olması gerektiği ve settings.py'nin bundan nasıl okunması gerektiği ile ilgili bir örnek gönderir misiniz? Bu konuda biraz kafam karıştı. –

+0

@JohnLucas Sorularıma cevap vermeye çalışmak için cevabımı değiştirdim. Daha fazla yardıma ihtiyacınız varsa lütfen bana bildirin. –

+0

Yardımlarınız için teşekkür ederiz –