私の問題:
使用時 ガンコーン 私のWSGI HTTPサーバーとして、 フォアマン Django(wsgi?)アプリケーションが見つかりません。
アプリケーション構造:
私のDjangoアプリケーションでは、次のような構造になっています。
<git_repository_root>/
<django_project_root>/
<configuration_root>/
ザ <git_repository_root>
プロジェクト管理とデプロイメントに関連するものが含まれています(requirements.txt
, Procfile
, fabfile.py
、等)
ザ <django_project_root>
私のDjangoアプリとアプリケーションロジックが含まれています。
最後に、 <configuration_root>
私のもの settings.py
そして wsgi.py
.
私が試したこと:
じぶんの Procfile
このように見えるはずです( Herokuドキュメント):
web: gunicorn myapp.wsgi
実行中 foreman start
このプロジェクトレイアウトでは、エラーが発生します。
ImportError: Import by filename is not supported.
効果:
Procfileを <git_repository_root>
に <git_repository_root>
ローカルで動作します。 Herokuにプッシュした後(注:Herokuは <git_repository_root>
)ワーカーのスケーリングやプロセスの追加ができません。次のようになります。
Scaling web dynos... failed
! No such process type web defined in Procfile.
欲しいと思う Procfile
私の <git_repository_root>
とにかく-それでそれがうまくいかないのはなぜですか?私も変更してみました Procfile
に:
web: gunicorn myapp/myapp.wsgi
しかし運はありません。どんな助けでも大歓迎です!
回答:
回答№1は1あなたを動かす Procfile
戻る <git_repository_root>
使用する:
web: gunicorn <django_project_root>.myapp:myapp
最後の「myapp」をアプリのクラス名に置き換えます。おそらく「myapp」です。
...そしてエラーメッセージを読んでください:それはあなたがあなたのワーカークラスをインポートできないことを伝えています(app
)ファイル名(myapp.wsgi)で、もちろん言う dirname/myapp.wsgi
も機能しません。Pythonが必要です module:class
構文。
回答№2の場合は0
あなたのエントリを扱います Procfile
bashコマンドのように。あなたはできる cd
あなたの <django_project_root>
サーバーを実行します。
たとえば、あなたの Procfile
(あなたの中にあるはずです <git_repository_root>
)は次のようになります。
web: cd <django_project_root> && gunicorn
--env DJANGO_SETTINGS_MODULE=<configuration_root>.settings
<configuration_root>.wsgi