/ / Herokuにデプロイするときにプロジェクトルートを指定する-django、deployment、heroku

Herokuにデプロイするときにプロジェクトルートを指定する - django、deployment、heroku

私の問題:

使用時 ガンコーン 私の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