uWSGI + nginx pour projet django, erreur avec strting uwsgi

J'ai essayer de serveur web pour django sur nginx+uwsgi, le système d'exploitation debian (3.1.0-1-amd64 x86_64)
nginx 1.1.8-1, uwsgi 0.9.8.3-1
configuration:

<uwsgi>
<socket>/tmp/uwsgi.sock</socket>
<process>1</process>
<master/>
<enable-threads/>
<uid>33</uid>
<gid>33</gid>
<pidfile>/tmp/uwsgi.pid</pidfile>
</uwsgi>

dans le fichier /etc/uwsgi/apps-enabled/webapp.xml
nginx configuration

location / {
        uwsgi_pass unix:///tmp/uwsgi.sock;
        include uwsgi_params;
        uwsgi_param UWSGI_SCRIPT webapp;
        uwsgi_param UWSGI_CHDIR  /data/web/webapp/webapp;
    }

tout projet in /data/web/webapp/webapp/, ici setting.py, url ect.
dans /data/web/webapp/webapp/webapp.py

import sys, os
import django.core.handlers.wsgi
sys.path.insert(0, '/data/web/webapp/webapp')
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
application = django.core.handlers.wsgi.WSGIHandler()

uid et gid 33 c'est www-data de l'utilisateur
essayez d'exécuter uwsgi comme

root#uwsgi -s /var/run/uwsgi.chaussette -x
/etc/uwsgi/apps-enabled/webapp.xml

[uWSGI] parsing config file /etc/uwsgi/apps-enabled/webapp.xml
*** Starting uWSGI 0.9.8.3-debian (64bit) on [Wed Dec 14 21:42:02 2011] ***
compiled with version: 4.6.1 on 27 July 2011 18:25:51
writing pidfile to /tmp/uwsgi.pid
uWSGI running as root, you can use --uid/--gid/--chroot options
setgid() to 33
setuid() to 33
your memory page size is 4096 bytes
unlink(): Permission denied [socket.c line 38]
bind(): Address already in use [socket.c line 70]

comment la permission qu'ils veulent? et quel est le problème..
si je lance uwsgi comme racine de l'erreur a disparu, et je vois

 *** WARNING: you are running uWSGI as root !!! (use the --uid flag) *** 
your memory page size is 4096 bytes
uwsgi socket 0 bound to UNIX address /var/run/uwsgi.sock fd 3
uwsgi socket 1 bound to UNIX address /tmp/uwsgi.sock fd 4
your server socket listen backlog is limited to 100 connections
*** Operational MODE: single process ***
*** no app loaded. going in full dynamic mode ***
*** uWSGI is running in multiple interpreter mode ***
spawned uWSGI master process (pid: 20732)
spawned uWSGI worker 1 (pid: 20733, cores: 1)

mais lorsque je tente d'accéder au serveur, ngix retourne 502 page d'erreur. Et en plus: l'autorisation d'erreur dans les logs nginx:

 2011/12/14 21:57:17 [crit] 20739#0: *1 connect() to unix:///tmp/uwsgi.sock failed (13: Permission denied) while connecting to upstream, client: 10.10.3.111, server: ******, request: "GET /favicon.ico HTTP/1.1", upstream: "uwsgi://unix:///tmp/uwsgi.sock:", host: "****.****.**"

si le changement de propriétaire de /tmp/uwsgi.chaussette pour nginix utilisateur lors de l'exécution (www-data), il a écrit d'autres journaux

[error] 20739#0: *21 upstream prematurely closed connection while reading response header from upstream,

mais toujours erreur 502 (

comment résoudre ce problème? quelqu'un peut m'aider..
voulez vraiment utiliser nginx+uwsgi au lieu de apache.
grâce


cependant, la solution est proche 🙂
J'utilise un socket tcp maintenant et de plus, le changement uwsgi configuration et installé un peu plus de paquets.
a été une importante option --auto-chargement.
maintenant uwsgi de configuration comme ceci:

<uwsgi>
<module>webapp</module>
<socket>127.0.0.1:5080</socket>
<pythonpath>/data/web/webapp/webapp</pythonpath>
<autoload/>
<daemonize>/var/log/uwsgi_webapp.log</daemonize>
<processes>1</processes>
<uid>33</uid>
<gid>33</gid>
<enable-threads/>
<master/>
<harakiri>120</harakiri>
<max-requests>5000</max-requests>
</uwsgi>

reste à résoudre un autre problème..
uwsgi utilisez pas le système principal version de python >_<

option "pythonpath" found in plugin python26_plugin.so
*** Starting uWSGI 0.9.8.3-debian (64bit) on [Thu Dec 15 22:52:23 2011] ***
compiled with version: 4.6.1 on 27 July 2011 18:25:51
uWSGI running as root, you can use --uid/--gid/--chroot options
setgid() to 33
setuid() to 33
your memory page size is 4096 bytes
 *** WARNING: you have enabled harakiri without post buffering. Slow upload could be rejected on post-unbuffered webservers *** 
uwsgi socket 0 bound to TCP address 127.0.0.1:5080 fd 4
Python version: 2.6.7 (r267:88850, Aug  3 2011, 12:02:14)  [GCC 4.6.1]
Python main interpreter initialized at 0xc47df0
threads support enabled
your server socket listen backlog is limited to 100 connections
*** Operational MODE: single process ***
added /data/web/webapp/webapp/ to pythonpath.
WSGI application 0 (SCRIPT_NAME=) ready on interpreter 0xc47df0 pid: 22983 (default app)
*** uWSGI is running in multiple interpreter mode ***
spawned uWSGI master process (pid: 22983)
spawned uWSGI worker 1 (pid: 22984, cores: 1)

il utiliser python 2.6.7 mais l'essentiel de la version du système est 2.7.2 et tous les modules python installé, de sorte que beaucoup d'erreurs dans le journal des tentatives répétées pour importer inexistante, l'un des nombreux types d'erreur:

  File "/usr/lib/python2.6/dist-packages/django/db/__init__.py", line 78, in <module>
    connection = connections[DEFAULT_DB_ALIAS]
  File "/usr/lib/python2.6/dist-packages/django/db/utils.py", line 93, in __getitem__
    backend = load_backend(db['ENGINE'])
  File "/usr/lib/python2.6/dist-packages/django/db/utils.py", line 51, in load_backend
    raise ImproperlyConfigured(error_msg)
django.core.exceptions.ImproperlyConfigured: 'django_mongodb_engine' isn't an available database backend. 
Try using django.db.backends.XXX, where XXX is one of:
    'dummy', 'mysql', 'oracle', 'postgresql', 'postgresql_psycopg2', 'sqlite3'
Error was: No module named django_mongodb_engine.base

alors.. comment définir la version de python pour uwsgi?

Oh.... désolé. problème disparu :-[ uwsgi_python27 -x /etc/uwsgi/apps-enabled/conf et tout est ok! merci à vous tous

OriginalL'auteur useless for me | 2011-12-14