Environnement :
OS X 10.8.5
Django 1.6
python 2.7.2
Permettez-moi d'abord de publier ma configuration
[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;
}
}
La configuration est essentiellement basée sur les deux tutoriels suivants
https://uwsgi-docs.readthedocs.org/en/latest/tutorials/Django_and_nginx.html
https://docs.djangoproject.com/en/1.6/ howto/ déploiement/wsgi/uwsgi/
Si vous utilisez socket avec nginx et uwsgi, une erreur 502 sera signalée,
Ce qui suit est toujours le cas dans uwsgi, et aucune requête n'est vue.
*** 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 ***
Si vous utilisez 127.0.0.1:3031, une erreur 400 sera signalée.
Mais vous pouvez voir dans uwsgi que des demandes arrivent.
*** 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)
Je suis ennuyé depuis deux jours et je ne sais pas comment le résoudre...
De plus, je voudrais demander quelle est la fonction d'include uwsgi_params dans nginx ?
J'ai trouvé que sans cela, uwsgi signalerait l'erreur suivante :
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 signale 502, ce qui signifie que le paramètre en amont est incorrect ou que le serveur pointé par l'amont signale une erreur.
。从题主贴出的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
Peut-être que vous n'avez pas la permission d'écrire sur white.sock.Cela n'a rien à voir avec nginx, c'est purement une erreur dans la configuration de uwsgi ou django (s'il y a une erreur dans le code source du script lui-même, il doit signaler 5xx). Si possible, publiez le fichier settings.py de Django.
Fournissez une supposition possible :
https://docs.djangoproject.com/en/1.6/ref/settings/#std%3asetting-ALLOWED_HOSTS