2012-06-27 3 views
7

Ich habe einen Server läuft Django/Nginx/uWSGI mit uWSGI im Kaiser-Modus, und das Fehlerprotokoll dafür (die Vasallen-Level-Fehlerprotokoll, nicht die Kaiser-Level-Protokoll) hat eine kontinuierliche Berechtigungen Fehler jedes Mal, wenn es ein neues hervorbringt Arbeiter, etwa so:uWSGI Serverprotokoll ... Berechtigung verweigert, Datei zu lesen ... welche Datei?

Di 26. Juni 19.34.55 2012 - respawned uwsgi Arbeiter 2 (neu pid: 9334)

Fehler beim Öffnen der Datei zum Lesen: Zugriff verweigert

Problem ist, ich weiß nicht, welche Datei Probleme beim Öffnen hat; Es ist offensichtlich nicht die Log-Datei, da ich sie mir anschaue und sie ohne Probleme schreibe. Irgendeine Möglichkeit, es herauszufinden? Ich benutze die apt-get-Version von uWSGI 1.0.3-debian über Upstart auf Ubuntu 12.04. Die Site funktioniert erfolgreich, abgesehen von dem, was wie ein Speicherleck aussieht ... daher schaue ich mir die Log-Datei an. Ich habe experimentiert, um die Berechtigungen des gesamten/opt/Verzeichnisses zu ändern, um den uwsgiuser Benutzer zu enthalten, ohne Erfolg. Ich benutze einen TCP-Socket, also sollten Berechtigungen dort kein Problem sein. Ist es der Cache? Hat das seine eigenen Berechtigungen? Wenn ja, wo?

My Upstart conf file 

description "uWSGI" start on runlevel [2345] stop on runlevel [06] respawn 

env UWSGI=/usr/bin/uwsgi env LOGTO=/var/log/uwsgi/emperor.log 

exec $UWSGI \ 
--master \ 
--emperor /etc/uwsgi/vassals \ 
--die-on-term \ 
--auto-procname \ 
--no-orphans \ 
--logto $LOGTO \ 
--logdate 

Meine Vassal ini-Datei:

[uwsgi] 
# Variables 
base = /opt/env/mysiteenv 

# Generic Config 
uid = uwsgiuser 
gid = uwsgiuser 
socket = 127.0.0.1:5050 
master = true 
processes = 2 
reload-on-as = 128 
harakiri = 60 
harakiri-verbose = true 
auto-procname = true 
plugins = http,python 
cache = 2000 
home = %(base) 
pythonpath = %(base)/mysite 
module = wsgi 
logto = /opt/log/mysite/error.log 
logdate = true 
+0

Dies ist wahrscheinlich eher eine nützliche Antwort auf ServerFault zu bekommen. – Amber

Antwort

8

Die eigentliche Antwort auf Diese Frage scheint dieser Ubuntu-spezifische Fehler zu sein:

https://bugs.launchpad.net/ubuntu/+source/libjpeg-turbo/+bug/1031718

Sie können, indem die Linien

setuid uwsgiuser 
setgid uwsgiuser 

in Ihre Emporkömmling Konfigurationsdatei und das Löschen der uid und gid Einstellungen von Ihrem uwsgi Konfiguration um das Problem zu umgehen.

+2

Das hat total funktioniert; ich danke dir sehr. Der Fehler hatte mich verrückt gemacht. – bkev

+0

Was ist eine Upstart-Konfigurationsdatei? –

+0

@uszywieloryba [Upstart] (http://upstart.ubuntu.com) ist der Init-Ersatz von Ubuntu. Es führt Jobs basierend auf Dateien in '/ etc/init' (unter anderem). – alastair

3

Sie zu strace der Prozess könnte versuchen und sehen, was die Fehlermeldung auslöst, so etwas wie:

UWSGI=/usr/bin/uwsgi LOGTO=/var/log/uwsgi/emperor.log strace -f -o strace.log -etrace=open,write $UWSGI --master --emperor /etc/uwsgi/vassals --die-on-term --auto-procname --no-orphans --logto $LOGTO --logdate