【发布时间】:2014-10-20 00:17:35
【问题描述】:
我正在尝试允许我的 django 站点的用户通过模型上的 FileField 将文件(主要是 PDF)上传到我的服务器。但是,在尝试使用我的模型表单生成的上传字段时,我一直遇到“Errno 13 Permission Denied”。
我在四处搜索时发现了许多潜在的解决方案,但到目前为止还没有任何东西可以正常工作。这是我第一次真正的部署,我可能自己也搞糊涂了。作为参考,我使用的是 Ubuntu 14.04、Django 1.6 和 gunicorn+nginx。
现在,我的媒体根目录位于我的项目目录中:
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
MEDIA_ROOT = os.path.join(BASE_DIR, "media/uploads")
错误表明正确的目录存在问题,因此它会出现在正确的位置。
我尝试将媒体目录chown -r 发送到www-data:www-data,但没有成功。我四处寻找,找出运行 python 进程的用户并试图将“他”设置为所有者 - 没有用。我将其转回其原始所有者和组 (root:root) 并尝试将 chmod -r 更改为 755 和 770,这两者都未能解决问题。
如果我 chmod -r 到 777,那么一切都会“正常工作”——但出于显而易见的原因,我不想继续公开。
我的静态文件正在从我的项目根目录 (/var/www/mysite/static) 之外的目录中正确收集和提供服务,因此我尝试将媒体文件夹移到那里并重复上述所有步骤 - 结果相同.
如何让我的媒体文件夹安全地接受来自我的用户的上传和下载,而不会让这个安全漏洞大开?
谢谢!
【问题讨论】:
-
工作过right answer
标签: python django nginx gunicorn