Django / NGINX / Gunicorn / Ubuntu:媒体文件 - [Errno 13]权限被拒绝

时间:2017-03-16 12:14:00

标签: python linux ubuntu nginx gunicorn

我已在Digital Ocean VPS上部署了我的网站 - Ubuntu 14.04。我在我的一个模型中有ImageField我在Django admin中选择(浏览电脑并上传图像)。问题是此图片无法保存到/media/categories/。它的提升:

  

[Errno 13]许可被拒绝:   ' /home/django/project/media/categories/television_d3q3EM0.png'

我认为是,因为Nginx没有向/media/目录写权限所以我运行这些命令:

sudo chown -R www-data /media/

没有帮助

sudo chown -R django /media/

没有任何帮助

我是Linux权利的新手,所以我无法弄清楚我做错了什么。

媒体文件夹位于/project/目录(manage.py所在的位置)。

以下是/media/文件夹的权限。

所有者拥有权利,所以我不知道为什么sudo chown -R www-data /media/没有工作。

enter image description here

GUNICORN OWNER

 ps aux | grep gunicorn
django   16636  0.3  2.7  66040 13616 ?        Ss   08:16   0:00 /usr/bin/python /usr/bin/gunicorn --name=project --pythonpath=project --bind=127.0.0.1:9000 --config /etc/gunicorn.d/gunicorn.py project.wsgi:application
django   16642  1.1  7.8 174800 39164 ?        S    08:16   0:00 /usr/bin/python /usr/bin/gunicorn --name=project --pythonpath=project --bind=127.0.0.1:9000 --config /etc/gunicorn.d/gunicorn.py project.wsgi:application
django   16643  1.9 10.5 214244 52808 ?        S    08:16   0:01 /usr/bin/python /usr/bin/gunicorn --name=project --pythonpath=project --bind=127.0.0.1:9000 --config /etc/gunicorn.d/gunicorn.py project.wsgi:application
django   16644  2.3 10.4 209232 52224 ?        S    08:16   0:01 /usr/bin/python /usr/bin/gunicorn --name=project --pythonpath=project --bind=127.0.0.1:9000 --config /etc/gunicorn.d/gunicorn.py project.wsgi:application
root     16667  0.0  0.1  11744   932 pts/0    S+   08:17   0:00 grep --color=auto gunicorn

2 个答案:

答案 0 :(得分:2)

假设您使用的是gunicorn,请确保运行gunicorn的用户具有写入指定路径的权限。查看gunicorn deployment docs以了解如何控制哪个用户正在运行gunicorn。

答案 1 :(得分:1)

问题在于chown命令。

sudo chown -R django /media/

因为有/ media /目录而工作 - 它是树底部media文件夹的绝对路径。

我应该这样做:

sudo chown -R django media/这是一个相对路径(我在项目目录中)。

django用户正在处理gunicorn,因此django必须是media/所有者(或必须拥有适当的权利)。