Umgebung:
OS X 10.8.5
Django 1.6
Python 2.7.2
Lassen Sie mich zuerst meine Konfiguration veröffentlichen
[uwsgi]
# socket = /Users/scarlex/Projects/venv/mysite/white.sock
socket = 127.0.0.1:3031
chdir = /Users/scarlex/Projects/venv/mysite/
module = sakuramai.wsgi:application
home = /Users/scarlex/Projects/venv
env = DJANGO_SETTINGS_MODULE=sakuramai.settings
static_files = false
master = true
processes = 5
chmod-socket = 664
vacuum = true
stats = 127.0.0.1:9191
upstream white {
server localhost:3031;
# server unix:///Users/scarlex/Projects/venv/mysite/white.sock;
}
server {
listen 80;
server_name mysite.com localhost;
charset utf-8;
location /static/ {
alias /Users/scarlex/Projects/venv/mysite/static/
expires 30d;
}
location / {
uwsgi_pass white;
include uwsgi_params;
uwsgi_param UWSGI_SCRIPT django_wsgi;
}
}
Die Konfiguration basiert im Wesentlichen auf den folgenden zwei Tutorials
https://uwsgi-docs.readthedocs.org/en/latest/tutorials/Django_and_nginx.html
https://docs.djangoproject.com/en/1.6/ howto/ Bereitstellung/wsgi/uwsgi/
Wenn Sie Socket sowohl mit Nginx als auch mit UWSGI verwenden, wird ein 502-Fehler gemeldet,
Folgendes ist in uwsgi immer der Fall und es wird keine Anfrage angezeigt.
*** uWSGI is running in multiple interpreter mode ***
spawned uWSGI master process (pid: 88475)
spawned uWSGI worker 1 (pid: 88476, cores: 1)
spawned uWSGI worker 2 (pid: 88477, cores: 1)
spawned uWSGI worker 3 (pid: 88478, cores: 1)
spawned uWSGI worker 4 (pid: 88479, cores: 1)
spawned uWSGI worker 5 (pid: 88480, cores: 1)
*** Stats server enabled on 127.0.0.1:9191 fd: 17 ***
Wenn Sie 127.0.0.1:3031 verwenden, wird ein 400-Fehler gemeldet.
Aber Sie können in uwsgi sehen, dass Anfragen eingehen.
*** uWSGI is running in multiple interpreter mode ***
spawned uWSGI master process (pid: 88497)
spawned uWSGI worker 1 (pid: 88498, cores: 1)
spawned uWSGI worker 2 (pid: 88499, cores: 1)
spawned uWSGI worker 3 (pid: 88500, cores: 1)
spawned uWSGI worker 4 (pid: 88501, cores: 1)
spawned uWSGI worker 5 (pid: 88502, cores: 1)
*** Stats server enabled on 127.0.0.1:9191 fd: 17 ***
[pid: 88500|app: 0|req: 1/1] 127.0.0.1 () {42 vars in 727 bytes} [Mon Feb 24 15:47:56 2014] GET / => generated 26 bytes in 406 msecs (HTTP/1.1 400) 1 headers in 53 bytes (1 switches on core 0)
[pid: 88501|app: 0|req: 1/2] 127.0.0.1 () {40 vars in 658 bytes} [Mon Feb 24 15:47:57 2014] GET /favicon.ico => generated 26 bytes in 190 msecs (HTTP/1.1 400) 1 headers in 53 bytes (1 switches on core 0)
Ich bin seit zwei Tagen genervt und weiß nicht, wie ich es lösen soll...
Außerdem möchte ich fragen, was die Funktion von include uwsgi_params; in nginx ist.
Ich habe festgestellt, dass uwsgi ohne dies den folgenden Fehler meldet:
Traceback (most recent call last):
File "/Users/scarlex/Projects/Python-projects/skm2014/lib/python2.7/site-packages/django/core/handlers/wsgi.py", line 196, in __call__
request = self.request_class(environ)
File "/Users/scarlex/Projects/Python-projects/skm2014/lib/python2.7/site-packages/django/core/handlers/wsgi.py", line 91, in __init__
self.method = environ['REQUEST_METHOD'].upper()
KeyError: u'REQUEST_METHOD'
nginx报502,表示upstream设置有误或者upstream指向的server报错。
。从题主贴出的uwsgi配置来看,unix:///Users/scarlex/Projects/venv/mysite/white.sock
写法错误,多了两个斜杠,正确的是unix:/Users/scarlex/Projects/venv/mysite/white.sock
chmod-socket = 664
可能不当,尝试设为chmod-socket = 666
。nginx一般是以http用户启动的,664
可能无权限写入white.sock。这就跟nginx无关了,纯粹是uwsgi的配置或者django配置有误(如果是自身的脚本源码出错应该报5xx)。如果可能贴出django的settings.py吧。
提供一个可能性的猜测:
https://docs.djangoproject.com/en/1.6/ref/settings/#std%3asetting-ALLOWED_HOSTS