【问题标题】:Django/NGINX/Gunicorn/Ubuntu: Media files - [Errno 13] Permission deniedDjango/NGINX/Gunicorn/Ubuntu:媒体文件 - [Errno 13] 权限被拒绝
【发布时间】:2017-08-07 14:39:22
【问题描述】:

我已经在 Digital Ocean VPS - Ubuntu 14.04 上部署了我的网站。我在 Django admin 中选择的一个模型中有一个ImageField(浏览电脑并上传图像)。问题是这张图片无法保存到/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/ 不起作用。

独角兽所有者

 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

【问题讨论】:

  • 您的文件夹权限应该是755 而不是311
  • @themanatuf 它没有帮助。我试图改变它。
  • 也许sudo chown -R yourusername:www-data /home/django/project/media

标签: python linux ubuntu nginx gunicorn


【解决方案1】:

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

【讨论】:

  • 他正在使用 nginx,在原帖中是这样说的。
  • 所以你的回答是部分正确的。问题是指定路径。我应该做 media/ 而不是 /media/。
【解决方案2】:

问题出在chown 命令上。

sudo chown -R django /media/

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

我应该这样做:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-26
    • 2015-03-30
    • 2021-01-17
    • 2018-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多