所以,我对托管和Linux都是全新的,所以请原谅我,如果我说错了。我还在学习:)。
我正在使用Django创建一个小型个人网站。我想在网上看看它是否一切正常。我从linode得到了一个廉价的服务器,并使用Digital-Ocean的指南(具有讽刺意味)我把一切都搞定了。我很高兴。
但是......这是一个主要问题,我已经阅读了一半的互联网并且无法找到类似的问题:当帖子请求大于〜4MB(上传图片等)时)文件以错误的权限保存。
当请求大小小于大约4MB时,一切都可以正常运行。当请求大小更大时,所有内容都会上传并保存到服务器而不会出现任何问题,但从那时起,我无法再从浏览器访问文件,并且网站不断对这些文件进行403抛弃。这是因为文件突然以错误的权限或类似的东西保存。
禁止文件的权限: -rw ------- 1 merlijn root 7900880 May 12 08:24 filename1.pdf
工作文件的权限: -rw-r - r-- 1 merlijn root 207420 5月11日19:36 filename2.jpg
我不确定即使工作文件是否完全正确,因为我认为它不需要root。
我厌倦了这个问题。听起来很不合逻辑;什么文件大小与权限!?而且我缺乏这方面的经验这一事实并没有使解决它变得更容易。如果这里有人有金色小费,我会非常感激:)
我在 Ubuntu 17.04 上使用 Nginx 和 uWSGI 以及 Django 1.11 应用程序。
答案 0 :(得分:4)
在我自己努力解决这个问题后,我明白了。 AlexD的大文件处理方式不同是正确的。
来自Django的文档:
FILE_UPLOAD_PERMISSIONS
默认值:无
将新上传的文件设置为的数字模式(即0o644)。有关这些模式的含义的更多信息,请参阅os.chmod()的文档。
如果没有给出或者是None,您将获得与操作系统相关的行为。在大多数平台上,临时文件的模式为0o600,从内存中保存的文件将使用系统的标准umask保存。
总而言之:使用临时文件存储较大的文件,默认情况下将获得0o600权限。通过将值设置为FILE_UPLOAD_PERMISSIONS
可以轻松解决问题。
https://docs.djangoproject.com/en/1.11/ref/settings/#file-upload-permissions