22

ubuntu 13.04 を使用しています。私は使用してuwsgiを実行していますsudo service uwsgi start

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 として実行した場合には発生しないはずです。

4

2 に答える 2

36

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あり、グループもであることを意味しますshwetankarwxそれでは、ビットを読んでみましょう。最初のグループはファイルの所有者に関連しているためrw-、ファイルは所有者によって読み取りおよび書き込み可能であり、グループによって読み取りおよび書き込み可能であり、他のユーザーによって読み取り可能であることを意味します。ファイルの所有者が何かを書き込もうとしているサービスであること、またはファイルがサービスのグループに属していることを確認する必要があります。そうしないと、permission deniedエラーが発生します。

USWGI サービスで使用されているユーザー名uwsgiがあり、そのサービスで上記のファイルを書き込み可能にしたい場合は、次のようにファイルの所有者を変更する必要があります。

chown uwsgi /home/shwetanka/logs/mysite/mysite.log. 所有者 (最初のグループ) の書き込みビットrwxは既に に設定されているため1、そのファイルは UWSGI サービスによって書き込み可能になります。さらに質問がある場合は、コメントを残してください。

于 2013-08-31T12:02:41.270 に答える
1

または、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 グループのグループ メンバーも書き込みできるようになりました。

于 2014-10-31T10:05:26.650 に答える