Мезонин на Heroku

Я пытаюсь установить приложение Mezzanine (Django) на Heroku. У меня есть пользовательская тема в приложении в проекте.

Я получаю эту ошибку с сайта herokuapp:

Application Error
An error occurred in the application and your page could not be served. Please try again in a few moments.

If you are the application owner, check your logs for details.

Я получаю эту ошибку из «логов героку»:

2014-03-01T03:16:46.703103+00:00 heroku[web.1]: State changed from crashed to starting
2014-03-01T03:16:52.887091+00:00 heroku[web.1]: Starting process with command `python manage.py collectstatic --noinput; python manage.py run_gunicorn -b 0.0.0.0:48220`
2014-03-01T03:16:54.917679+00:00 app[web.1]: /app/.heroku/python/lib/python2.7/site-packages/mezzanine/utils/conf.py:59: UserWarning: TIME_ZONE setting is not set, using closest match: Etc/UTC
2014-03-01T03:16:54.917679+00:00 app[web.1]:   warn("TIME_ZONE setting is not set, using closest match: %s" % tz)
2014-03-01T03:16:54.945927+00:00 app[web.1]: Unknown command: 'collectstatic'
2014-03-01T03:16:54.945927+00:00 app[web.1]: Type 'manage.py help' for usage.
2014-03-01T03:16:55.283913+00:00 app[web.1]:   warn("TIME_ZONE setting is not set, using closest match: %s" % tz)
2014-03-01T03:16:55.283913+00:00 app[web.1]: /app/.heroku/python/lib/python2.7/site-packages/mezzanine/utils/conf.py:59: UserWarning: TIME_ZONE setting is not set, using closest match: Etc/UTC
2014-03-01T03:16:55.299183+00:00 app[web.1]: Type 'manage.py help' for usage.
2014-03-01T03:16:55.299183+00:00 app[web.1]: Unknown command: 'run_gunicorn'
2014-03-01T03:16:57.198274+00:00 heroku[web.1]: Process exited with status 1
2014-03-01T03:16:57.211687+00:00 heroku[web.1]: State changed from starting to crashed
2014-03-01T03:16:57.213010+00:00 heroku[web.1]: State changed from crashed to starting
2014-03-01T03:17:02.491996+00:00 heroku[web.1]: Starting process with command `python manage.py collectstatic --noinput; python manage.py run_gunicorn -b 0.0.0.0:48145`
2014-03-01T03:17:04.444781+00:00 app[web.1]: /app/.heroku/python/lib/python2.7/site-packages/mezzanine/utils/conf.py:59: UserWarning: TIME_ZONE setting is not set, using closest match: Etc/UTC
2014-03-01T03:17:04.472595+00:00 app[web.1]: Type 'manage.py help' for usage.
2014-03-01T03:17:04.444781+00:00 app[web.1]:   warn("TIME_ZONE setting is not set, using closest match: %s" % tz)
2014-03-01T03:17:04.472595+00:00 app[web.1]: Unknown command: 'collectstatic'
2014-03-01T03:17:04.992615+00:00 app[web.1]: /app/.heroku/python/lib/python2.7/site-packages/mezzanine/utils/conf.py:59: UserWarning: TIME_ZONE setting is not set, using closest match: Etc/UTC
2014-03-01T03:17:04.992615+00:00 app[web.1]:   warn("TIME_ZONE setting is not set, using closest match: %s" % tz)
2014-03-01T03:17:05.080366+00:00 app[web.1]: Unknown command: 'run_gunicorn'
2014-03-01T03:17:05.080366+00:00 app[web.1]: Type 'manage.py help' for usage.
2014-03-01T03:17:06.827562+00:00 heroku[web.1]: Process exited with status 1
2014-03-01T03:17:06.842272+00:00 heroku[web.1]: State changed from starting to crashed
2014-03-01T03:17:08.397089+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/ host=appname request_id=b2f6e7d5-9979-472d-b480-ca36a602f146 fwd="130.126.175.201" dyno= connect
= service= status=503 bytes=

Вот мои установленные приложения var в settings.py (cc — это имя моей темы/приложения):

INSTALLED_APPS = (
    "cc",
    "django.contrib.admin",
    "django.contrib.auth",
    "django.contrib.contenttypes",
    "django.contrib.redirects",
    "django.contrib.sessions",
    "django.contrib.sites",
    "django.contrib.sitemaps",
    "django.contrib.staticfiles",
    "mezzanine.boot",
    "mezzanine.conf",
    "mezzanine.core",
    "mezzanine.generic",
    "mezzanine.blog",
    "mezzanine.forms",
    "mezzanine.pages",
    "mezzanine.galleries",
    "mezzanine.twitter",
    #"mezzanine.accounts",
    #"mezzanine.mobile",
    "gunicorn",
)

В моих требованиях.txt есть пушка. Кроме того, и run_gunicorn, и collectstatic работают локально из моего venv. Почему это происходит? Я следовал этому: https://gist.github.com/joshfinnie/4046138 для моих URL-адресов. py (обратите внимание, что мои требования.txt сгенерированы из заморозки пипсов > требований.txt, поэтому он актуален).

Вот мой профайл:

web: python manage.py collectstatic --noinput; python manage.py run_gunicorn -b 0.0.0.0:$PORT

person Charles    schedule 01.03.2014    source источник


Ответы (2)


Ваш Procfile находится по тому же пути, что и settings.py/manage.py, или за его пределами? У меня была аналогичная проблема, и я переместил свой профиль на один уровень вверх в каталоге вашего проекта. Вот как бригадир выполняет обычный проект Django. Тем не менее, я запускаю его с помощью wsgi.

Вот мой профайл

Procfile: web: python manage.py collectstatic --noinput; gunicorn your_project.wsgi -b 0.0.0.0:$PORT

person Cliff F    schedule 05.03.2014
comment
Похоже, что collectstatic не существует, согласно журналам heroku. Также он не может импортировать модуль wsgi в соответствии с журналами heroku. Мой Procfile находится в том же каталоге, что и manage.py и все остальное, точно так же, как Mezzanine создает его. - person Charles; 06.03.2014

Похоже, у вас не установлены все необходимые приложения, поэтому отсутствуют collectstatic и run_gunicorn. Убедитесь, что в файле requirements.txt есть все необходимые пакеты, требуемые Heroku.

Мои требования.txt в текущем проекте Mezzanine содержат:

Cartridge==0.9.2
Django==1.6.2
Mezzanine==3.0.9
Pillow==2.3.1
bleach==1.4
boto==2.27.0
dj-database-url==0.3.0
dj-static==0.0.5
django-s3-storages-utils==0.1.0
django-storages==1.1.8
django-toolbelt==0.0.1
filebrowser-safe==0.3.2
future==0.9.0
grappelli-safe==0.3.7
gunicorn==18.0
html5lib==0.999
oauthlib==0.6.1
pisa==3.0.33
psycopg2==2.5.2
pystache==0.5.3
pytz==2014.2
requests==2.2.1
requests-oauthlib==0.4.0
six==1.6.1
static==1.0.2
tzlocal==1.0
wsgiref==0.1.2

https://web.archive.org/web/20161018191100/http://www.benhavilland.com/blog/deploying-mezzanine-on-heroku//

person Ben Havilland    schedule 31.03.2014