Ich verwende Ubuntu 13.04. Ich verwende uwsgi mit Sudo service uwsgi start
Ich habe die Protokolldatei in Django als /home/shwetanka/logs/mysite/mysite.log
konfiguriert.
Aber ich bekomme diesen Fehler -
ValueError: Unable to configure handler 'file': [Errno 13] Permission denied: '/home/shwetanka/logs/mysite/mysite.log'
Wie kann ich das beheben? Dies sollte nicht passieren, wenn ich als Sudo uwsgi betreibe.
Sie müssen die Berechtigungen mit dem Befehl chmod
wie folgt festlegen: chmod 775 /home/shwetanka/logs/mysite/mysite.log
.
Schauen Sie sich den Besitzer der Datei mit ls -l /home/shwetanka/logs/mysite/mysite.log
an und machen Sie sie für uwsgi
beschreibbar. Wenn die Datei nicht im Besitz von uwsgi
ist, müssen Sie den Befehl chown
verwenden.
Sehen Sie sich den Benutzernamen an, unter dem Ihr Dienst mit ps aux | grep 'uwsgi'
ausgeführt wird.
Wenn die Sicherheit im Moment für Sie nicht so wichtig ist, verwenden Sie chmod 777 /home/shwetanka/logs/mysite/mysite.log
und fertig. Aber so wird das nicht gemacht.
Am sichersten ist es, wenn Sie den Eigentümer und die Gruppe der Datei überprüfen und gegebenenfalls ändern und die Berechtigungen entsprechend anpassen.
Lassen Sie uns ein Beispiel geben.
Wenn ich eine Datei in /home/shwetanka/logs/mysite/mysite.log
habe und der Befehl ls -l /home/shwetanka/logs/mysite/mysite.log
die folgende Ausgabe gibt:
-rw-rw-r-- 1 shwetanka shwetanka 1089 Aug 26 18:15 /home/shwetanka/logs/mysite/mysite.log
dies bedeutet, dass der Besitzer der Datei shwetanka
und die Gruppe auch shwetanka
ist. Nun lesen wir die rwx
Bits. Die erste Gruppe bezieht sich auf den Dateieigentümer. Daher bedeutet rw-
, dass die Datei vom Eigentümer lesbar und beschreibbar, von der Gruppe lesbar und beschreibbar und von den anderen lesbar ist. Sie müssen sicherstellen, dass der Eigentümer der Datei der Dienst ist, der versucht, etwas in die Datei zu schreiben, oder dass die Datei zu einer Gruppe des Dienstes gehört. Andernfalls wird ein permission denied
-Fehler angezeigt.
Wenn ich nun einen Benutzernamen uwsgi
habe, der vom USWGI-Dienst verwendet wird und die oben genannte Datei von diesem Dienst beschreibbar sein soll, muss ich den Eigentümer der Datei wie folgt ändern:
chown uwsgi /home/shwetanka/logs/mysite/mysite.log
. Da das Schreibbit für den Eigentümer (die erste rwx
-Gruppe) bereits auf 1
gesetzt ist, kann diese Datei nun vom UWSGI-Dienst beschrieben werden. Für weitere Fragen, bitte hinterlassen Sie einen Kommentar.
Alternativ können Sie die Option umask für uwsgi einstellen ( http://uwsgi-docs.readthedocs.org/de/latest/Options.html#umask ).
Ich hatte die gleiche Situation, ich habe uwsgi über www-data laufen lassen und Buildout verwendet. Dieser Fix in meinem Fall sah also so aus:
[uwsgi]
recipe = buildout.recipe.uwsgi
xml-socket = /tmp/uwsgi.sock
xml-master = True
xml-chmod-socket = 666
xml-umask = 0002
xml-workers = 3
xml-env = ...
xml-wsgi-file = ...
Nachdem diese Protokolldateiberechtigungen 664 wurden, können auch Gruppenmitglieder der Gruppe "www-data" in die Protokolldatei schreiben.