web-dev-qa-db-ja.com

DjangoおよびuWSGIによる内部サーバーエラー

このガイドの手順を実行しようとしています: http://uwsgi-docs.readthedocs.org/en/latest/tutorials/Django_and_nginx.html

Nginxの部分に到達する前に、uWSGIが正しく機能することを確認しようとしています。

私のフォルダ構造はsrv/www/domain/projectdatabank /です

プロジェクトのデータバンクフォルダーには、manage.pyファイルが含まれています

私のwsgi.pyファイルは次のようになります。

_import os
import sys
from Django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
_

私のsettings.pyを見る必要がありますか?

ブラウザを指定すると、次のエラーが表示されます。

-- no python application found, check your startup logs for errors --- [pid: 10165|app: -1|req: -1/1] 66.56.35.151 () {38 vars in 681 bytes} [Tue Jul 9 18:19:46 2013] GET /admin/ => generated 21 bytes in 0 msecs (HTTP/1.1 500) 1 headers in 57 bytes (0 switches on core 0) --- no python application found, check your startup logs for errors --- [pid: 10165|app: -1|req: -1/2] 66.56.35.151 () {36 vars in 638 bytes} [Tue Jul 9 18:19:49 2013] GET / => generated 21 bytes in 0 msecs (HTTP/1.1 500) 1 headers in 57 bytes (0 switches on core 0)

UWGIログを確認すると、上記とまったく同じです。

41
tareq

私はこれを解決しました

私の元のコマンドラインには、uWSGIを実行するためのwsgi.pyファイルへのフルパスが含まれていませんでした

uwsgi --http :8000 --chdir /srv/www/databankinfo.com/projectdatabank/ --wsgi-file wsgi.py

これに

uwsgi --http :8000 --chdir /srv/www/databankinfo.com/projectdatabank/ --wsgi-file full/path/wsgi.py

そしてそれは働いた

45
tareq

この同じエラーをデバッグする他の人には、別の可能性があります:uwsgi.pyによって例外がスローされています。これをテストするには、アプリでpython manage.py Shellを使用してDjango Shellを直接開き、uwsgi.pyをインポートします(uwsgi.iniと同じパスを使用します)。

39
Fraser Harris

Django uwsgiの背後での展開に関する私のブログ投稿を確認してください http://blog.johannesklug.de/2012/11/27/deploying-Django-behind-nginx-with-uwsgi -and-virtualenv / 。パラメーターmodule=project.wsgi:applicationで呼び出し可能なアプリを指すuwsgiをセットアップするini-Fileを作成しました。

ファイル全体は次のようになります。

(env)[project@Host ~]$ cat uwsgi.ini 
[uwsgi]
# path to where you put your project code
chdir=/home/project/project

# python path to the wsgi module, check if you have one
module=project.wsgi:application

# this switch tells uwsgi to spawn a master process,
# that will dynamically spawn new child processes for
# server requests
master=True
# uwsgi stores the pid of your master process here
pidfile=/home/project/master.pid
vacuum=True
# path to your virtual environment
home=/home/project/env/
# path to log file
daemonize=/home/project/log
# this is where you need to point nginx to,
# if you chose to put this in project home make
# sure the home dir is readable and executable by
# nginx
socket=/tmp/uwsgi.sock

### SEE UPDATE NOTICE FOR THIS ONE
env = Django_SETTINGS_MODULE=project.settings

Virtualenvを使用していることに注意してください。

また、行が欠落している可能性があります

import os

os.environ.setdefault("Django_SETTINGS_MODULE", "project.settings")

あなたのwsgi.pyで

12
room2web

UがDjanoアプリからinit。pyファイルを削除したかどうかを確認します。 As Djangoはそれらを使用して、どのフォルダがアプリであるかを知るので、それらは重要です。

0
Ibrahim Tayseer