私はubuntu 13.04を使用しています。 Sudo service uwsgi start
を使用してuwsgiを実行しています
Djangoとして/home/shwetanka/logs/mysite/mysite.log
としてログファイルを構成しました
しかし、私はこのエラーを受け取っています-
ValueError: Unable to configure handler 'file': [Errno 13] Permission denied: '/home/shwetanka/logs/mysite/mysite.log'
どうすれば修正できますか?これは、uwsgiをSudoとして実行する場合には発生しません。
次のように、chmod
コマンドを使用して権限を修正する必要があります:chmod 775 /home/shwetanka/logs/mysite/mysite.log
。
ls -l /home/shwetanka/logs/mysite/mysite.log
でファイルの所有者を確認し、uwsgi
に書き込み可能にします。ファイルがuwsgi
によって所有されていない場合は、chown
コマンドを使用する必要があります。
サービスが実行されているユーザー名をps aux | grep 'uwsgi'
で確認します。
現時点でセキュリティがそれほど重要ではない場合は、chmod 777 /home/shwetanka/logs/mysite/mysite.log
を使用してください。しかし、それはこれが行われる方法ではありません。
これを行う最も安全な方法は、ファイルの所有者とグループを確認し、必要に応じてそれらを変更し、それに応じてアクセス許可を調整することです。
例を挙げましょう。
/home/shwetanka/logs/mysite/mysite.log
にファイルがあり、コマンドls -l /home/shwetanka/logs/mysite/mysite.log
で次の出力が得られた場合:
-rw-rw-r-- 1 shwetanka shwetanka 1089 Aug 26 18:15 /home/shwetanka/logs/mysite/mysite.log
これは、ファイルの所有者がshwetanka
であり、グループもshwetanka
であることを意味します。次に、rwx
ビットを読み取ります。最初のグループはファイル所有者に関連しているため、rw-
は、ファイルが所有者によって読み取りおよび書き込み可能であり、グループによって読み取りおよび書き込み可能であり、他のユーザーによって読み取り可能であることを意味します。ファイルの所有者がファイルに何かを書き込もうとしているサービスであること、またはファイルがサービスのグループに属していることを確認する必要があります。そうしないと、permission denied
エラーが発生します。
USWGIサービスで使用されるユーザー名uwsgi
があり、上記のファイルをそのサービスで書き込み可能にしたい場合は、次のようにファイルの所有者を変更する必要があります。
chown uwsgi /home/shwetanka/logs/mysite/mysite.log
。所有者(最初のrwx
グループ)の書き込みビットはすでに1
に設定されているため、そのファイルはUWSGIサービスによって書き込み可能になります。さらに質問がある場合は、コメントを残してください。
または、uwsgiのumaskオプションを設定することもできます( http://uwsgi-docs.readthedocs.org/en/latest/Options.html#umask )。
同じ状況で、www-dataを介してuwsgiを実行していて、buildoutを使用しました。したがって、私の場合、この修正は次のようになりました。
[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 = ...
このログファイルの権限が664になった後、www-dataグループのグループメンバーもそれに書き込むことができます。