2013-08-31 26 views
12

Sto usando ubuntu 13.04. Io corro uwsgi utilizzando sudo service uwsgi startAutorizzazione negata durante la scrittura del file di registro

ho file di log in Django come /home/shwetanka/logs/mysite/mysite.log

configurato ma sto ricevendo questo errore -

ValueError: Unable to configure handler 'file': [Errno 13] Permission denied: '/home/shwetanka/logs/mysite/mysite.log' 

Come posso risolvere il problema? Questo non dovrebbe accadere quando eseguo uwsgi come sudo.

risposta

21

È necessario correggere le autorizzazioni con il comando chmod, ad esempio chmod 775 /home/shwetanka/logs/mysite/mysite.log.

Dai un'occhiata al proprietario del file con ls -l /home/shwetanka/logs/mysite/mysite.log e rendilo scrivibile a uwsgi. Se il file non è di proprietà di uwsgi, sarà necessario utilizzare il comando chown.

Dai uno sguardo al nome utente sotto il quale il tuo servizio è in esecuzione con ps aux | grep 'uwsgi'.

Se la sicurezza non è così importante per voi al momento, utilizzare chmod 777 /home/shwetanka/logs/mysite/mysite.log e il gioco è fatto. Ma non è così che viene fatto.

Il modo più sicuro per farlo consiste nel controllare il proprietario e il gruppo del file, quindi modificarli se necessario e regolare le autorizzazioni di conseguenza.

Facciamo un esempio.

Se ho un file in /home/shwetanka/logs/mysite/mysite.log e il comando ls -l /home/shwetanka/logs/mysite/mysite.log ha pronunciato la seguente uscita:

-rw-rw-r-- 1 shwetanka shwetanka 1089 Aug 26 18:15 /home/shwetanka/logs/mysite/mysite.log 

significa che il proprietario del file è shwetanka e il gruppo è anche shwetanka. Ora leggiamo i bit rwx. Il primo gruppo è correlato al proprietario del file, quindi rw- significa che il file è leggibile e scrivibile dal proprietario, leggibile e scrivibile dal gruppo e leggibile dagli altri. Devi assicurarti che il proprietario del file sia il servizio che sta cercando di scrivere qualcosa su di esso o che il file appartiene al gruppo del servizio o riceverai un errore permission denied.

Ora, se ho un nome utente uwsgi che viene utilizzato dal servizio USWGI e desidera che il file di cui sopra per essere scrivibile da tale servizio, devo cambiare il proprietario del file, in questo modo:

chown uwsgi /home/shwetanka/logs/mysite/mysite.log. Poiché il bit di scrittura per il proprietario (il primo gruppo rwx) è già impostato su 1, quel file sarà ora scrivibile dal servizio UWSGI. Per ulteriori domande, si prega di lasciare un commento.

+1

Grazie.In realtà i processi uwsgi erano in esecuzione con l'utente 'www-data'. Ho cambiato l'utente con chown e ha funzionato. comunque ho spostato la posizione del file di log su var e ho dato chmod 775 e chown www-data: www-data e funziona. Grazie ancora. – Shwetanka

+0

Prego. Ho dato il massimo e sono contento che abbia funzionato. ;-) – Luka

0

In alternativa è possibile impostare l'opzione umask per uwsgi (http://uwsgi-docs.readthedocs.org/en/latest/Options.html#umask).

Ho avuto la stessa situazione, stavo eseguendo uwsgi tramite www-data e ho utilizzato buildout. Quindi, questa correzione nel mio caso si presentava così:

[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 = ... 

Dopo questo file di registro permessi divennero 664, quindi i membri del gruppo del gruppo www-data possono anche scrivere in esso.

Problemi correlati