3

Heroku チュートリアルで Django を開始するに従っ
ています Foreman を使用して Gunicorn で Django アプリを実行しようとすると、次のエラー トレースバックが表示されます。

09:23:33 web.1  | started with pid 7012  
09:23:34 web.1  | 2013-05-06 09:23:34 [7012] [INFO] Starting gunicorn 0.17.2  
09:23:34 web.1  | 2013-05-06 09:23:34 [7012] [INFO] Listening at: `http://0.0.0.0:5000` (7012)  
09:23:34 web.1  | 2013-05-06 09:23:34 [7012] [INFO] Using worker: sync  
09:23:34 web.1  | 2013-05-06 09:23:34 [7015] [INFO] Booting worker with pid: 7015  
09:23:34 web.1  | 2013-05-06 09:23:34 [7015] [ERROR] Exception in worker process:  
09:23:34 web.1  | Traceback (most recent call last):  
09:23:34 web.1  |   File "/usr/local/lib/python2.7/site-packages/gunicorn/arbiter.py", line 485, in spawn_worker  
09:23:34 web.1  |     worker.init_process()  
09:23:34 web.1  |   File "/usr/local/lib/python2.7/site-packages/gunicorn/workers/base.py", line 100, in init_process  
09:23:34 web.1  |     self.wsgi = self.app.wsgi()  
09:23:34 web.1  |   File "/usr/local/lib/python2.7/site-packages/gunicorn/app/base.py", line 103, in wsgi  
09:23:34 web.1  |     self.callable = self.load()  
09:23:34 web.1  |   File "/usr/local/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 25, in load  
09:23:34 web.1  |     return util.import_app(self.app_uri)  
09:23:34 web.1  |   File "/usr/local/lib/python2.7/site-packages/gunicorn/util.py", line 372, in import_app  
09:23:34 web.1  |     __import__(module)  
09:23:34 web.1  |   File "/Users/cosmicMan66/DjangoDev/hepcat_server/hepcat_server/wsgi.py", line 27, in <module>  
09:23:34 web.1  |     from django.core.wsgi import get_wsgi_application  
09:23:34 web.1  | ImportError: No module named django.core.wsgi  
09:23:34 web.1  | Traceback (most recent call last):  
09:23:34 web.1  |   File "/usr/local/lib/python2.7/site-packages/gunicorn/arbiter.py", line 485, in spawn_worker  
09:23:34 web.1  |     worker.init_process()  
09:23:34 web.1  |   File "/usr/local/lib/python2.7/site-packages/gunicorn/workers/base.py", line 100, in init_process  
09:23:34 web.1  |     self.wsgi = self.app.wsgi()  
09:23:34 web.1  |   File "/usr/local/lib/python2.7/site-packages/gunicorn/app/base.py", line 103, in wsgi  
09:23:34 web.1  |     self.callable = self.load()  
09:23:34 web.1  |   File "/usr/local/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 25, in load  
09:23:34 web.1  |     return util.import_app(self.app_uri)  
09:23:34 web.1  |   File "/usr/local/lib/python2.7/site-packages/gunicorn/util.py", line 372, in import_app  
09:23:34 web.1  |     __import__(module)  
09:23:34 web.1  |   File "/Users/cosmicMan66/DjangoDev/hepcat_server/hepcat_server/wsgi.py", line 27, in <module>  
09:23:34 web.1  |     from django.core.wsgi import get_wsgi_application  
09:23:34 web.1  | ImportError: No module named django.core.wsgi  
09:23:34 web.1  | 2013-05-06 09:23:34 [7015] [INFO] Worker exiting (pid: 7015)  
09:23:35 web.1  | 2013-05-06 09:23:35 [7012] [INFO] Shutting down: Master  
09:23:35 web.1  | 2013-05-06 09:23:35 [7012] [INFO] Reason: Worker failed to boot.  
09:23:35 web.1  | exited with code 3  
09:23:35 system | sending SIGTERM to all processes  
SIGTERM received

Procfile はプロジェクトのルート ディレクトリにあり、以下が含まれます。

ウェブ: ガンコーン hepcat_server.wsgi

settings.py は hepcat_server ディレクトリにあります

gunicornを使用する$ python manage.py run_gunicorn
と、正常に起動し、デフォルトの Django ページが表示されます

4

1 に答える 1

1

あなたが使用していた Heroku セットアップ ページをたどっているときに、同じ問題が発生しました。このページで解決策を見つけました。後世のためにここにコピーしました:

django プロジェクトのルート ディレクトリに、Procfile ファイルを作成します。次に、これをWebに書き込みます:sh -c "cd djangoproject && gunicorn djangoproject.wsgi"。次に、同じ場所に .env という別のファイルを作成し、その中に DJANGO_SETTINGS_MODULE=djangoproject.settings を書き込みます。これは、djangoproject.wsgi モジュールで設定できない必要な環境変数を設定するのに役立ちます。テストするために foreman start を実行します。これが何をするかは、以下の問題を考えると自明です。

デプロイするときは、heroku でアプリケーションを作成した後、コマンド heroku config:set DJANGO_SETTINGS_MODULE=djangoproject.settings で環境変数を設定します。これは、ファイル djangoproject/djangoproject/wsgi.py が実行される前にデプロイが失敗するためです。

「djangoproject」を django プロジェクトの名前に置き換えることを忘れないでください。

于 2015-04-15T01:39:41.927 に答える