通过django admin发布的新文件出现403错误

时间:2017-06-28 18:54:57

标签: python django nginx gunicorn

我在DigitalOcean上运行了一个带有Gunicorn和Nginx的Django服务器。我遇到了一个问题,即通过管理员界面添加新文件会产生403禁止错误。具体来说,如果我召唤它的查询(例如Object.objects.all())但有问题的文件无法在我的模板中呈现,则该文件可以正常工作。我之前通过执行chmod/chown修复了问题,但该修复仅适用于现有文件,而不适用于新文件。有谁知道如何永久性地应用修复一次?

1 个答案:

答案 0 :(得分:1)

TL; DR:

  • 在settings.py
  • 中的FILE_UPLOAD_PERMISSIONS = 0o644
  • 在bash shell中:find /path/to/MEDIA_ROOT -type d -exec chmod go+rx {} +

解释

使用限制性太强的权限创建文件,因此用户Nginx运行,无法读取它们。要解决此问题,您需要确保Nginx可以读取文件并可以访问文件。

目标

首先,您需要FILE_UPLOAD_PERMISSIONS才能允许Nginx用户阅读。其次,MEDIA_ROOT和所有子目录必须是Nginx可读的并且可由Gunicorn写入。

如何

您必须确保目录为world readable(和可执行文件),或者目录组必须是Nginx进程所属的组,并且它们必须至少是组可读的(并且是可执行的)。

作为旁注,你说你之前使用过chmod和chown,所以我假设你熟悉所使用的术语。既然你没有,我强烈建议您完全阅读链接教程,这样您就可以了解您使用的命令可以做什么,并且可以搞砸。