it-swarm.dev

خطأ خادم داخلي مع Django و uWSGI

أحاول اتباع الخطوات الواردة في هذا الدليل: http://uwsgi-docs.readthedocs.org/en/latest/tutorials/Django_and_nginx.html

قبل أن أصل إلى الجزء nginx ، أحاول التأكد من أن uWSGI يعمل بشكل صحيح

هيكل المجلد الخاص بي هو srv/www/domain/projectdatabank /

يحتوي مجلد بنك بيانات المشروع على ملف management.py الخاص بي

يبدو ملف wsgi.py الخاص بي كما يلي:

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

هل تريد أن ترى الإعدادات الخاصة بي؟

أحصل على الخطأ التالي عندما أشر نفسي إلى المستعرض:

-- 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

لقد حللت هذا

في سطر الأوامر الأصلي الخاص بي لم يتضمن المسار الكامل إلى ملف wsgi.py لتشغيل uWSGI

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. لاختبار ذلك ، افتح Django Shell في تطبيقك مباشرةً باستخدام python manage.py Shell واستورد uwsgi.py (استخدم نفس المسار كما في uwsgi.ini).

39
Fraser Harris

تحقق من نشر مدونتي على النشر Django behind uwsgi http://blog.johannesklug.de/2012/11/27/deploying-Django-behind-nginx-with-uwsgi -و-virtualenv / . لقد قمتُ بإنشاء ملف ini-file لإعداد uwsgi ، مما يشير إلى التطبيق الذي يمكن استدعاؤه باستخدام المعلمة module=project.wsgi:application.

الملف بأكمله يقرأ شيئا مثل هذا:

(env)[[email protected] ~]$ 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

تحقق مما إذا قمت بحذف أي ملف init. py من تطبيقات Djano. كما Django يستخدمهم لمعرفة المجلدات التي هي تطبيقات ، لذلك فهي نوع من المهم.

0
Ibrahim Tayseer