nginx + uwsgi n'a pas réussi à déployer Django, soit 400 ou 502....
伊谢尔伦
伊谢尔伦 2017-05-16 17:28:00
0
1
739

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'
伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

répondre à tous(1)
我想大声告诉你

Si vous utilisez socket avec nginx et uwsgi, une erreur 502 sera signalée

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. unix:///Users/scarlex/Projects/venv/mysite/white.sock写法错误,多了两个斜杠,正确的是unix:/Users/scarlex/Projects/venv/mysite/white.sock。从题主贴出的uwsgi配置来看,chmod-socket = 664可能不当,尝试设为chmod-socket = 666。nginx一般是以http用户启动的,664Peut-être que vous n'avez pas la permission d'écrire sur white.sock.

Si vous utilisez 127.0.0.1:3031, une erreur 400 sera signalée.

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 :

Enfin, si DEBUG est False, vous devez également définir correctement le paramètre ALLOWED_HOSTS. Si vous ne le faites pas, toutes les demandes seront renvoyées comme « Mauvaise demande (400) »

.

https://docs.djangoproject.com/en/1.6/ref/settings/#std%3asetting-ALLOWED_HOSTS

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!