डीजेंगो विकास-सर्वर का उपयोग करते हुए, मैंने अपने ब्लॉग को तैनात करने की कोशिश करते समय 400-त्रुटि प्राप्त करने के बाद, मैंने एक नया टेस्ट-प्रोजेक्ट शुरू किया (स्टार्टप्रोजेक्ट का उपयोग करके और कुछ भी नहीं कर रहा - बस एक यहां और वहां छोटी कॉन्फ़िगरेशन) - जितना संभव हो उतना सरल रखने के लिए जितना संभव हो सके।डीजेंगो यूडब्ल्यूएसजीआई एनजीआईएनएक्स खराब अनुरोध 400
जब मैं "manage.py रनरवर" करता हूं, तो यह मुझे एक पृष्ठ दिखाता है, यह कहकर कि मैं इसे देखता हूं, क्योंकि मेरे पास मेरी सेटिंग्स में "DEBUG = True" है।
अभी तक इतना अच्छा है। त्रुटियाँ नहीं।
लेकिन अगर मैं यूडब्ल्यूएसजीआई और एनजीआईएनएक्स का उपयोग करता हूं, तो मुझे "खराब अनुरोध (400)" पृष्ठ मिलता है।
प्रारंभ में मेरे पास कुछ आयात-त्रुटियां थीं और मुझे sys.path में कुछ पथ जोड़ना पड़ा। लेकिन अब मुझे पायथन, एनजीआईएनएक्स या यूडब्ल्यूएसजीआई से कोई त्रुटि नहीं मिली है और अभी भी 400-त्रुटि-पृष्ठ के साथ समाप्त हो गया है।
मैं निम्नलिखित की कोशिश की है:
- डीबग = झूठी
- TEMPLATE_DEBUG = झूठी
- ALLOWED_HOSTS = [ '*']
- ALLOWED_HOSTS = '*'
- बाहर टिप्पणी की 'django.middleware.clickjacking.XFrameOptionsMiddleware' MIDDLEWARE_CLASSES
- mod_wsgi के साथ अपाचे के बजाय uWSGI के साथ एनजीआईएनएक्स का उपयोग करना (मैं बुद्धि ज इस स्थापना, क्योंकि मुझे यह पसंद है, लेकिन यह मेरी समस्या) का समाधान नहीं
मेरे सेटअप: uWSGI, nginx और ग्राहक (फ़ायरफ़ॉक्स) से मेरी नोटबुक के भीतर (Kubuntu 14.04 रन)। वोस्ट/सबडोमेन (cefk_blawg.localhost), जो मेजबान फ़ाइल (cefk_blawg.localhost 127.0.0.1) में है और एनजीआईएनएक्स में सही ढंग से कॉन्फ़िगर किया गया है (मुझे पता है, क्योंकि जब मैं एक पिरामिड-टेस्ट-प्रोजेक्ट का उपयोग करता हूं, तो यह वास्तव में काम करता है आकर्षण)। रास्ते में कोई फ़ायरवॉल नहीं है। इसमें वर्चुअलenv और पाइप-स्थापित सब कुछ (django/uwsgi/तकिया/mysql-python)।
मेरे uwsgi.ini:
[uwsgi]
# Unix socket (full path)
socket = /tmp/cefk_blawg.sock
# Set socket permissions
chmod-socket = 666
# Master process
master = true
# Maximum number of worker processes
processes = 4
# Set timeout
harakiri = 60
harakiri-verbose = true
# Limit post-size
limit-post = 65536
# When to start buffering for post-vars
post-buffering = 1 ## none of these makes my problem go away
#post-buffering = 8192 ## none of these makes my problem go away
#post-buffering = 32768 ## none of these makes my problem go away
# Daemonize
daemonize = /home/cefk/Dokumente/cefk_blawg/uwsgi.log
pidfile = /home/cefk/Dokumente/cefk_blawg/uwsgi.pid
# Limit queue
listen = 64
max-requests = 1000
# Whatever this does .. it works for pyramid (got it from a tutorial)
reload-on-as = 128
reload-on-rss = 96
no-orphans = true
log-slow = true
# This is the full path to my virtualenv
virtualenv = /home/cefk/Dokumente/cefk_blawg/venv
# Django wsgi file
wsgi-file = /home/cefk/Dokumente/cefk_blawg/cefk_info/cefk_info/wsgi.py
# Settings file (this seems to do nothing)
# And it gets set in the wsgi.py-file
env = DJANGO_SETTINGS_MODULE=cefk_info.settings
# Set domain (this seems to do nothing)
#domain = cefk_blawg.localhost
# Django-project base directory (this seems to do nothing)
#chdir = /home/cefk/Dokumente/cefk_blawg/cefk_info
# This seems to do nothing
#pythonpath=/home/cefk/Dokumente/cefk_blawg/cefk_info/cefk_info/
# Set vhost (this seems to do nothing)
#vhost = true
# Clean up environment on exit
vacuum = true
#
मेरे wsgi.py-फ़ाइल:
import os
import pprint
import site
import sys
from django.core.wsgi import get_wsgi_application
base_parent = '/home/cefk/Dokumente/cefk_blawg/'
base = '/home/cefk/Dokumente/cefk_blawg/cefk_info/'
sys.path.append(base_parent)
sys.path.append(base)
site.addsitedir(
'/home/cefk/Dokumente/cefk_blawg/venv/local/lib/python2.7/site-packages'
)
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "cefk_info.settings")
activate_env = '/home/cefk/Dokumente/cefk_blawg/venv/bin/activate_this.py'
execfile(activate_env, dict(__file__=activate_env))
# I stole this shamelessly from another stackoverflow-post - this is good to have
class LoggingMiddleware:
def __init__(self, application):
self.__application = application
def __call__(self, environ, start_response):
errors = environ['wsgi.errors']
pprint.pprint(('REQUEST', environ), stream=errors)
def _start_response(status, headers, *args):
pprint.pprint(('RESPONSE', status, headers), stream=errors)
return start_response(status, headers, *args)
return self.__application(environ, _start_response)
application = LoggingMiddleware(get_wsgi_application())
यह मेरा अनुरोध/प्रतिक्रिया है, जो मैं wsgi.py में LoggingMiddleware से मिलता है :
(
'REQUEST',
{
'CONTENT_LENGTH': '',
'CONTENT_TYPE': '',
'DOCUMENT_ROOT': '/home/cefk/Dokumente/cefk_blawg/cefk_info/cefk_info',
'HTTP_ACCEPT': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'HTTP_ACCEPT_ENCODING': 'gzip, deflate',
'HTTP_ACCEPT_LANGUAGE': 'de,en-US;q=0.7,en;q=0.3',
'HTTP_CACHE_CONTROL': 'max-age=0',
'HTTP_CONNECTION': 'keep-alive',
'HTTP_DNT': '1',
'HTTP_HOST': 'cefk_blawg.localhost',
'HTTP_USER_AGENT': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:29.0) Gecko/20100101 Firefox/29.0',
'PATH_INFO': '/',
'QUERY_STRING': '',
'REMOTE_ADDR': '127.0.0.1',
'REMOTE_PORT': '42518',
'REQUEST_METHOD': 'GET',
'REQUEST_URI': '/',
'SERVER_NAME': 'cefk_blawg.localhost',
'SERVER_PORT': '80',
'SERVER_PROTOCOL': 'HTTP/1.1',
'UWSGI_SCHEME': 'http',
'uwsgi.node': 'lt',
'uwsgi.version': '2.0.5.1',
'wsgi.errors': <open file 'wsgi_errors', mode 'w' at 0x7ff4337110c0>,
'wsgi.file_wrapper': <built-in function uwsgi_sendfile>,
'wsgi.input': <uwsgi._Input object at 0x7ff437271e70>,
'wsgi.multiprocess': True,
'wsgi.multithread': False,
'wsgi.run_once': False,
'wsgi.url_scheme': 'http',
'wsgi.version': (1, 0)
}
)
('RESPONSE', '400 BAD REQUEST', [('Content-Type', 'text/html')])
[pid: 2652|app: 0|req: 1/1] 127.0.0.1() {42 vars in 675 bytes} [Thu Jun 12 17:16:59 2014] GET/=> generated 26 bytes in 150 msecs (HTTP/1.1 400) 1 headers in 53 bytes (1 switches on core 0)
संपादित करें: यह मेरा था nginx-config (नोटिस, उस फ़ोल्डर नाम इस बीच में परिवर्तित हो सकता है - तो उपेक्षा है कि, कृपया):
# Server configuration
server {
# Make site accessible from http://cefk_blawg.localhost/
server_name cefk_blawg.localhost;
root /home/cefk/Dokumente/cefk_blawg_django;
# Set charset
charset utf-8;
client_max_body_size 100M;
location /static {
autoindex on;
alias /home/cefk/Dokumente/cefk_blawg_django/static;
}
location /media {
autoindex on;
alias /home/cefk/Dokumente/cefk_blawg_django/media;
}
################################
# Port-based (old) #
################################
#location/{
# try_files $uri @application;
#}
#location @application {
# include /etc/nginx/uwsgi_params;
# uwsgi_pass 127.0.0.1:8000;
#}
################################
# /Port-based (old) #
################################
location/{
include /etc/nginx/uwsgi_params;
uwsgi_pass unix:///tmp/cefk_blawg.sock;
}
}
/संपादित करें
मैं विचारों से बाहर हूँ।
कृपया मदद करें।
त्रुटि आम तौर पर एक गलत ALLOWED_HOSTS को संदर्भित करती है। क्या आप सुनिश्चित हैं कि आपने प्रत्येक प्रयास को बदलने के बाद uWSGI को पुनरारंभ किया है? और यूडब्ल्यूएसजीआई के लिए ब्लॉग पोस्ट से प्रतिलिपि बनाने और पेस्ट से बचने के लिए, कम से कम विकल्पों का उपयोग करें (जैसा कि आधिकारिक दस्तावेज़ों में बताया गया है) और आखिरकार अपने पर्यावरण को विशेष रूप से क्या जोड़ना चाहिए (उदाहरण के लिए आरएसएस के 96 एमईजी आपके डीजेंगो उदाहरणों को लगातार पुनः लोड कर सकते हैं) – roberto
हां, मैं हर बार फिर से लोड किया। यहां तक कि nginx पुनरारंभ किया। पहली चीज मैंने कोशिश की, सभी मूल्यों के लिए ALLOWED_HOSTS को बदलना था, यहां तक कि समझने का एक दूरस्थ मौका भी था (स्थानीयहोस्ट/.localhost/my.domain/.my.domain/* स्ट्रिंग के रूप में सूची/* के रूप में)। मैं ALLOWED_HOSTS = '*' के साथ अटक गया। इसके अलावा, मैंने uwsgi.ini का उपयोग नहीं किया और कमांडलाइन से कॉल करते समय केवल कुछ पैरामीटर दिए। उसके बाद, मैंने django-docs से एक का उपयोग किया .. और फिर सबकुछ कॉपी किया, मुझे लगता है, यह व्यवहार्य या आवश्यक लग रहा था। –
क्या कोई है, जो हाल ही में काम करने के लिए django + uwsgi + nginx मिला है? क्या यह एक बग हो सकता है? –