uWSGI + nginx für django-Projekt, Fehler mit strting uwsgi
Ich versuche, up-webserver für django auf nginx+uwsgi, os - debian (3.1.0-1-amd64 x86_64)
nginx 1.1.8-1, uwsgi 0.9.8.3-1
Konfiguration:
<uwsgi>
<socket>/tmp/uwsgi.sock</socket>
<process>1</process>
<master/>
<enable-threads/>
<uid>33</uid>
<gid>33</gid>
<pidfile>/tmp/uwsgi.pid</pidfile>
</uwsgi>
in der Datei /etc/uwsgi/apps-enabled/webapp.xml
nginx-Konfiguration
location / {
uwsgi_pass unix:///tmp/uwsgi.sock;
include uwsgi_params;
uwsgi_param UWSGI_SCRIPT webapp;
uwsgi_param UWSGI_CHDIR /data/web/webapp/webapp;
}
alle projet in /data/web/webapp/webapp/, hier setting.py, urls ect.
in /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 und gid 33 ist www-data user
versuchen Sie, führen Sie uwsgi als
root#uwsgi -s /var/run/uwsgi.sock -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]
Berechtigung, wie Sie wollen? und was ist das problem..
wenn ich uwsgi als root Fehler ist Weg, und ich sehe
*** 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)
aber wenn ich versuche auf den server zuzugreifen, ngix gibt 502-Fehler-Seite. Und mehr: permission Fehler in nginx-logs:
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: "****.****.**"
wenn change owner of /tmp/uwsgi.Socke zu nginix Benutzer in runtime (www-data), schrieb er andere Protokolle
[error] 20739#0: *21 upstream prematurely closed connection while reading response header from upstream,
aber immer noch Fehler 502 (
wie dieses problem zu lösen? manche kann man mir helfen..
wirklich wollen, um nginx+uwsgi anstelle von apache.
Dank
jedoch, die Lösung ist nahe 🙂
Ich benutze tcp-socket-jetzt und mehr, ändern uwsgi-Konfiguration und installiert noch ein paar weitere Pakete.
war eine wichtige der option --autoload.
jetzt uwsgi-Konfiguration wie diese:
<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>
bleibt noch zu lösen andere Probleme..
uwsgi verwenden Sie nicht das system-python-version >_<
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)
er die Verwendung von python 2.6.7 aber wichtigsten system-version ist die 2.7.2 und alle python-Module installiert, so viele Fehler in die log - wiederholte versuche zu importieren, die nicht existent ist, eine von vielen typischen Fehler:
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
also.. wie set-version von python für uwsgi?
- Oh.... sorry. problem verschwunden :-[ uwsgi_python27 -x /etc/uwsgi/apps-enabled/conf und alles ok! Dank Euch allen
Du musst angemeldet sein, um einen Kommentar abzugeben.
unix-sockets gehorchen müssen, um die Datei-Berechtigung-Systeme. Also /var/run muss Schreibrechte www-data nginx muss in der Lage sein zu Lesen/schreiben /var/run/uwsgi.Socke
Wenn Sie nicht vertraut mit dieser Art von Sachen, die man nutzen sollte, tcp-sockets (wählen Sie einen port, und Sie sind bereit)
Set-option plugins in der uwsgi-Einstellungen: