2016-07-19 6 views
0

私は/var/projectでDjangoアプリケーションのルートを持っているし、このように定義モデル:infoフィールドを保存するときDjangoなぜFileFieldを保存するときに権限が拒否されたのですか?

class Notice(models.Model): 
    title = models.CharField('title', max_length=80, default='', blank=True) 
    info = models.FileField("info", null=True, upload_to='app/files') 

class NoticeForm(forms.ModelForm): 

    class Meta: 
     model = models.Notice 
     fields = ('title', 'info') 

、それはいつものようにエラーを発生させる:

Internal Server Error: /app/notice/update/9 

PermissionError at /app/notice/update/9 
[Errno 13] Permission denied: '/var/project/media/app/files/bm.py' 

私はパーミッション設定がO.K.いると思います理由:

A)私はこのようなwww-dataユーザーを経由してuwsgiを経由してDjangoのアプリを実行します。

[uwsgi] 
    uid = www-data 
    gid = www-data 
    chmod-socket = 666 
    chown-socket = www-data:www-data 

b)のメディアフォルダ:

(www)[email protected]:/var/project/media/app# ls -l 
total 40 
drwxr-xr-x 2 www-data www-data 36864 Jul 19 20:03 avatar 
drw-rw-rw- 2 www-data www-data 4096 Jul 19 15:06 files 

C)nginxの静的CONF:

location /media { 
    alias /var/project/media; 
} 
location /static { 
    alias /var/project/static; 
} 

d)フィールドがtx = models.ImageField("tx",blank=True, null=True,upload_to='app/avatar')であり、すべてがこのフィールドを保存するときは再確認してください。

この問題は1日中気になります。何が問題なの?

答えて

0

this solutionを試してみましたが、問題は解決しました。なぜか分かりませんが、それだけで動作します。

chgrp -R www-data /var/project 
chmod -R g+w /var/project 
usermod -a -G www-data root 
find /var/project -type d -exec chmod 2775 {} \; 
find /var/project -type f -exec chmod ug+rw {} \; 
関連する問題