我在DigitalOcean上运行了一个带有Gunicorn和Nginx的Django服务器。我遇到了一个问题,即通过管理员界面添加新文件会产生403禁止错误。具体来说,如果我召唤它的查询(例如Object.objects.all()
)但有问题的文件无法在我的模板中呈现,则该文件可以正常工作。我之前通过执行chmod/chown
修复了问题,但该修复仅适用于现有文件,而不适用于新文件。有谁知道如何永久性地应用修复一次?
答案 0 :(得分:1)
TL; DR:
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,所以我假设你熟悉所使用的术语。既然你没有,我强烈建议您完全阅读链接教程,这样您就可以了解您使用的命令可以做什么,并且可以搞砸。