2013-07-18 14 views
7

Ich versuche mein bestehendes Django-Projekt mit Heroku zu implementieren, folge dem von Heroku bereitgestellten Durchlauf und passe mich an, um für mein Projekt spezifisch zu sein. Nur um zu laufen schnell durch, was ich bisher getan habe:Django Deployment mit Heroku

  • installiert django-toolbelt in meinem virtualenv
  • eine procfile in der Wurzel meines Projektes erstellt Procile benannt, die beinhaltet:

    web: gunicorn projectname.wsgi 
    
  • foreman start mit bestätigt, dass mein Projekt noch

  • erstellt requirements.txt mitrichtig lokal liefund es in der Wurzel meines Projektes platziert
  • hinzugefügt folgend settings.py:

    import dj_database_url 
    DATABASES['default'] = dj_database_url.config() 
    
    # Honor the 'X-Forwarded-Proto' header for request.is_secure() 
    SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https') 
    
    # Allow all host headers 
    ALLOWED_HOSTS = ['*'] 
    
    # Static asset configuration 
    import os 
    BASE_DIR = os.path.dirname(os.path.abspath(__file__)) 
    STATIC_ROOT = 'staticfiles' 
    STATIC_URL = '/static/' 
    
    STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'), 
    ) 
    

Dies ist ein Punkt, an dem ich ein wenig verwirrt bin, der Lösungsweg nicht erwähnt, was passiert, mit meinen vorhandenen db-einstellungen, wie lassen, entfernen, ändern?

  • addierten die folgenden zu wsgi.py:

    from django.core.wsgi import get_wsgi_application 
    from dj_static import Cling 
    
    application = Cling(get_wsgi_application()) 
    
  • hinzugefügt Heroku als git remote und schob mein Projekt Heroku. Es funktionierte.

  • heroku ps:scale web=1

Allerdings, wenn ich versuche, mein Projekt, das ich ein Application Error bekommen zuzugreifen. Wenn ich den Status mit Heroku heroku ps --app projectname überprüfe, sagt es, dass der Prüfstand abgestürzt ist. Neustart tut nichts.

heroku logs --app projectname ergibt:

2013-07-18T00:01:14.246956+00:00 heroku[web.1]: Starting process with command `gunicorn projectname.wsgi` 
2013-07-18T00:01:16.054952+00:00 app[web.1]: 2013-07-18 00:01:16 [2] [INFO] Starting gunicorn 17.5 
2013-07-18T00:01:16.058972+00:00 app[web.1]: 2013-07-18 00:01:16 [2] [INFO] Listening at: http://0.0.0.0:55131 (2) 
2013-07-18T00:01:16.061566+00:00 app[web.1]: 2013-07-18 00:01:16 [2] [INFO] Using worker: sync 
2013-07-18T00:01:16.080073+00:00 app[web.1]: 2013-07-18 00:01:16 [7] [INFO] Booting worker with pid: 7 
2013-07-18T00:01:16.091347+00:00 app[web.1]: Traceback (most recent call last): 
2013-07-18T00:01:16.091347+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/arbiter.py", line 473, in spawn_worker 
2013-07-18T00:01:16.091347+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/workers/base.py", line 100, in init_process 
2013-07-18T00:01:16.091347+00:00 app[web.1]:  worker.init_process() 
2013-07-18T00:01:16.091347+00:00 app[web.1]:  self.wsgi = self.app.wsgi() 
2013-07-18T00:01:16.091347+00:00 app[web.1]:  self.callable = self.load() 
2013-07-18T00:01:16.091558+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/util.py", line 353, in import_app 
2013-07-18T00:01:16.091347+00:00 app[web.1]:  return util.import_app(self.app_uri) 
2013-07-18T00:01:16.091558+00:00 app[web.1]:  __import__(module) 
2013-07-18T00:01:16.091347+00:00 app[web.1]: 2013-07-18 00:01:16 [7] [ERROR] Exception in worker process: 
2013-07-18T00:01:16.091347+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 33, in load 
2013-07-18T00:01:16.091558+00:00 app[web.1]: Traceback (most recent call last): 
2013-07-18T00:01:16.091771+00:00 app[web.1]:  return util.import_app(self.app_uri) 
2013-07-18T00:01:16.091771+00:00 app[web.1]:  __import__(module) 
2013-07-18T00:01:16.091558+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/workers/base.py", line 100, in init_process 
2013-07-18T00:01:16.091558+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/app/base.py", line 115, in wsgi 
2013-07-18T00:01:16.091771+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 33, in load 
2013-07-18T00:01:16.091347+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/app/base.py", line 115, in wsgi 
2013-07-18T00:01:16.091558+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/arbiter.py", line 473, in spawn_worker 
2013-07-18T00:01:16.091558+00:00 app[web.1]:  self.callable = self.load() 
2013-07-18T00:01:16.091771+00:00 app[web.1]: ImportError: No module named projectname.wsgi 
2013-07-18T00:01:16.091558+00:00 app[web.1]: ImportError: No module named projectname.wsgi 
2013-07-18T00:01:16.091558+00:00 app[web.1]:  self.wsgi = self.app.wsgi() 
2013-07-18T00:01:16.091558+00:00 app[web.1]:  worker.init_process() 
2013-07-18T00:01:16.099257+00:00 app[web.1]: 2013-07-18 00:01:16 [7] [INFO] Worker exiting (pid: 7) 
2013-07-18T00:01:16.091771+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/util.py", line 353, in import_app 
2013-07-18T00:01:16.286985+00:00 app[web.1]: 2013-07-18 00:01:16 [2] [INFO] Shutting down: Master 
2013-07-18T00:01:16.288144+00:00 app[web.1]: 2013-07-18 00:01:16 [2] [INFO] Reason: Worker failed to boot. 
2013-07-18T00:01:17.956769+00:00 heroku[web.1]: Process exited with status 3 
2013-07-18T00:01:17.981029+00:00 heroku[web.1]: State changed from starting to crashed 
2013-07-18T00:11:46.404151+00:00 heroku[web.1]: State changed from crashed to starting 
2013-07-18T00:11:50.427658+00:00 heroku[web.1]: Starting process with command `gunicorn projectname.wsgi` 
2013-07-18T00:11:51.405718+00:00 app[web.1]: 2013-07-18 00:11:51 [2] [INFO] Starting gunicorn 17.5 
2013-07-18T00:11:51.406995+00:00 app[web.1]: 2013-07-18 00:11:51 [2] [INFO] Listening at: http://0.0.0.0:21344 (2) 
2013-07-18T00:11:51.407226+00:00 app[web.1]: 2013-07-18 00:11:51 [2] [INFO] Using worker: sync 
2013-07-18T00:11:51.418300+00:00 app[web.1]: 2013-07-18 00:11:51 [7] [INFO] Booting worker with pid: 7 
2013-07-18T00:11:51.425145+00:00 app[web.1]: Traceback (most recent call last): 
2013-07-18T00:11:51.425145+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 33, in load 
2013-07-18T00:11:51.425145+00:00 app[web.1]: 2013-07-18 00:11:51 [7] [ERROR] Exception in worker process: 
2013-07-18T00:11:51.425145+00:00 app[web.1]:  self.callable = self.load() 
2013-07-18T00:11:51.425145+00:00 app[web.1]:  worker.init_process() 
2013-07-18T00:11:51.425145+00:00 app[web.1]:  self.wsgi = self.app.wsgi() 
2013-07-18T00:11:51.425145+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/app/base.py", line 115, in wsgi 
2013-07-18T00:11:51.425145+00:00 app[web.1]:  return util.import_app(self.app_uri) 
2013-07-18T00:11:51.425145+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/arbiter.py", line 473, in spawn_worker 
2013-07-18T00:11:51.425145+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/workers/base.py", line 100, in init_process 
2013-07-18T00:11:51.425341+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/util.py", line 353, in import_app 
2013-07-18T00:11:51.425341+00:00 app[web.1]:  __import__(module) 
2013-07-18T00:11:51.425341+00:00 app[web.1]: ImportError: No module named projectname.wsgi 
2013-07-18T00:11:51.425341+00:00 app[web.1]: Traceback (most recent call last): 
2013-07-18T00:11:51.425341+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/arbiter.py", line 473, in spawn_worker 
2013-07-18T00:11:51.425341+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/workers/base.py", line 100, in init_process 
2013-07-18T00:11:51.425341+00:00 app[web.1]:  self.callable = self.load() 
2013-07-18T00:11:51.425341+00:00 app[web.1]:  worker.init_process() 
2013-07-18T00:11:51.425341+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/app/base.py", line 115, in wsgi 
2013-07-18T00:11:51.425341+00:00 app[web.1]:  self.wsgi = self.app.wsgi() 
2013-07-18T00:11:51.425513+00:00 app[web.1]:  return util.import_app(self.app_uri) 
2013-07-18T00:11:51.425513+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 33, in load 
2013-07-18T00:11:51.425513+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/util.py", line 353, in import_app 
2013-07-18T00:11:51.425513+00:00 app[web.1]:  __import__(module) 
2013-07-18T00:11:51.425513+00:00 app[web.1]: ImportError: No module named projectname.wsgi 
2013-07-18T00:11:51.425868+00:00 app[web.1]: 2013-07-18 00:11:51 [7] [INFO] Worker exiting (pid: 7) 
2013-07-18T00:11:51.550395+00:00 app[web.1]: 2013-07-18 00:11:51 [2] [INFO] Shutting down: Master 
2013-07-18T00:11:51.550395+00:00 app[web.1]: 2013-07-18 00:11:51 [2] [INFO] Reason: Worker failed to boot. 
2013-07-18T00:11:52.851413+00:00 heroku[web.1]: Process exited with status 3 
2013-07-18T00:11:52.867339+00:00 heroku[web.1]: State changed from starting to crashed 
2013-07-18T00:14:14.285978+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/ host=projectname.herokuapp.com fwd="173.54.54.86" dyno= connect= service= status=503 bytes= 
2013-07-18T00:14:14.405875+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/favicon.ico host=projectname.herokuapp.com fwd="173.54.54.86" dyno= connect= service= status=503 bytes= 

Jede Hilfe/Beratung wäre sehr dankbar, ich keine Möglichkeit gefunden Heroku direkt auf diese zu kontaktieren, bezieht sich alles, was man hier so zu.

Antwort

0

Nun, nicht wirklich sicher. Obwohl die Dokumentation von Heroku die Art und Weise empfiehlt, wie Sie es versucht haben. Ich bin mir wirklich nicht sicher, wo Gunicorn in Heroku installiert wird und wie es das Django-Projekt importiert. Der wahrscheinlichere Weg zum Prozess/Server mit django Einstellungen scheint

Web zu sein: ist/gunicorn_django --workers = 4 --bind = 0.0.0.0: $ PORT django_project/settings.py

wie empfohlen hier: http://blog.abhiomkar.in/2011/09/17/deploying-django-on-heroku-mac-os-x/

+0

Danke, aber das bedeutet nicht detailliert, was passiert mit meinen Datenbank-Einstellungen verwendet. – apardes

+0

Nun, Sie so etwas wie dieses ATENBANKEN = verwenden können { 'default': dj_database_url.config (default = 'postgres: // settings_stuff')}. Sie sollten auch https://devcenter.heroku.com/articles/heroku-postgresql#connection-in-python überprüfen, um die Verbindung zu db zu verstehen – dusual

2

Dies ist ein Punkt, an dem ich ein wenig verwirrt bin, der Lösungsweg keine Erwähnung gemacht, was mit meinen vorhandenen db Einstellungen geschieht, lassen wie es ist, entfernen, ändern?

Ich auch ihre Walkthrough gefolgt und hatte die gleichen Probleme.Für mich war es die DATABASES-Anweisung, die den Fehler gemacht hat. Ich ersetzte meine Datenbankkonfiguration durch die, die sie zur Verfügung stellen, während sie nur dem Wörterbuch hinzugefügt werden muss, das bereits von Ihren Datenbankeinstellungen erstellt wurde. Anstatt also Ihre Datenbank-Anweisung zu ersetzen, fügen Sie einfach:

DATABASES['default'] = dj_database_url.config() 
2

eine Möglichkeit besteht, dass Heroku die falsche Art von Anwendung während des Erstellungsprozesses identifiziert hat. Dies geschah zu mir:

(venv)josephs-mbp:myproject josephfusaro$ git push heroku master 
Fetching repository, done. 
Counting objects: 27, done. 
Delta compression using up to 4 threads. 
Compressing objects: 100% (13/13), done. 
Writing objects: 100% (14/14), 1.26 KiB | 0 bytes/s, done. 
Total 14 (delta 9), reused 0 (delta 0) 

-----> Node.js app detected 

Dieser sprang auf mich, weil ich eine Python/Django app bin Gebäude. Ich bin auf this Stackoverflow thread gestoßen, was erklärt, wie es passieren kann und zeigt, wie Sie das Build-Pack überschreiben können. In diesem Beispiel werden wir die Python buildpack werden spezifiziert, aber Sie können Heroku anweisen, die buildpack zu verwenden, was auch immer Art von Anwendung Sie bauen (click here for a full list)

heroku config:set BUILDPACK_URL=https://github.com/heroku/heroku-buildpack-python 
0

I verwendet:

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

diese Form kann lokal und auf Heroku

Verwandte Themen