Heroku django项目只读文件系统

时间:2013-07-18 06:26:28

标签: django file-upload heroku upload filesystems

我正在heroku上部署django项目,它工作正常,但在django admin中,当我尝试上传图像时出现错误:

OSError at /admin/blocks/block/add/

[Errno 30] Read-only file system: '/home/goldwedd'

2 个答案:

答案 0 :(得分:8)

这是设计的。

  

您的应用程序被编译成一个slug,供dyno经理快速分发。 slug的文件系统是只读的,这意味着您无法动态写入文件系统以进行半永久存储。 不支持以下类型的行为:

     
      
  • 在公共目录中缓存页面
  •   
  • 将上传的资源保存到本地磁盘(例如使用attachment_fu或paperclip)
  •   
  • 使用Ferret撰写全文索引
  •   
  • 写入SQLite或GDBM等文件系统数据库
  •   
  • 访问git-wiki等应用程序的git repo
  •   

https://devcenter.heroku.com/articles/read-only-filesystem

如果要上传文件,则需要对S3或django-storages支持的任何其他存储后端执行此操作。

答案 1 :(得分:0)

是的,您无法在heroku上传媒体文件。只有通过git才能部署内容,如果部署了静态文件或媒体文件,则可以通过一些解决方法进行部署。

对于实时文件上传,您应该考虑使用Amazon S3等外部服务。 django有一个很好的库来处理它(据我所记,它也是由heroku开发网站建议的):django-storages