Heroku django 项目只读文件系统

Posted

技术标签:

【中文标题】Heroku django 项目只读文件系统【英文标题】:Heroku django project read-only file system 【发布时间】:2013-07-16 23:11:28 【问题描述】:

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

OSError at /admin/blocks/block/add/

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

【问题讨论】:

【参考方案1】:

这是设计使然。

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

在公共目录中缓存页面 将上传的资产保存到本地磁盘(例如,使用 attachment_fu 或回形针) 使用 Ferret 编写全文索引 写入文件系统数据库,如 SQLite 或 GDBM 为 git-wiki 之类的应用访问 git 存储库

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

如果您要上传文件,则需要将文件上传到 S3 或 django-storages 支持的任何其他存储后端。

【讨论】:

【参考方案2】:

是的,您不能在 heroku 上传媒体文件。只有通过 git 你才能部署东西,如果你部署静态或媒体文件,它们将通过一些变通方法可用。

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

【讨论】:

以上是关于Heroku django 项目只读文件系统的主要内容,如果未能解决你的问题,请参考以下文章

Heroku 上带有 gunicorn 服务器的 Django 项目不提供静态文件

在 Heroku 服务器上部署 Django 错误 (500) - 据说是静态文件问题

Heroku 上的 Django - 缺少静态文件 manifest.json 文件

Heroku - 在 Django 应用程序中处理静态文件

在 Heroku 上接受比特币

Heroku django - 搞砸了项目结构