Heroku部署自动删除服务器文件?
Posted
技术标签:
【中文标题】Heroku部署自动删除服务器文件?【英文标题】:Heroku deploy deletes server files automatically? 【发布时间】:2012-12-11 12:04:20 【问题描述】:我是HEROKU APPS
的新手。
在我的 heroku 应用程序中,我遇到了问题。那就是我正在使用 php 脚本在服务器上保存数据。
例子:
<?PHP
$file = "example.txt";
$data = "Something...";
file_put_contents($file,$data);
?>
这个PHP脚本运行成功,完美保存数据。
但是,当我将我的APP部署到HEROKU
进行更新时->在此过程中example.txt
文件被自动删除。
【问题讨论】:
您没有提出问题,但您已经发表了声明。接受你所经历的,因为没有什么可以解决的。这是预期的行为,Heroku 文档对此很清楚。 嗨,听着!感谢您编辑我的问题。 【参考方案1】:Heroku 文件系统
Heroku 的行为会因您使用的堆栈而有所不同。使用 Bamboo,大部分文件系统是read-only。 Cedar 是ephemeral。
在任何一种情况下,文件系统都不会在dynos 之间共享,并且不应用于存储。为了在服务器端可靠地存储数据,您需要使用数据库(可能将上传的内容存储为 blob),或者作为外部资产在其他主机或服务上。
【讨论】:
【参考方案2】:Heroku 不会在 git 推送之间为持久文件提供硬盘空间,您必须使用 Amazon S3 之类的东西来存储文件。这就是 Heroku 将他们的文件系统称为 临时文件系统 的原因。在堆栈的早期版本中,它甚至是只读的。
Heroku 有一个教程:Using AWS S3 to Store Static Assets and File Uploads
【讨论】:
Femaref ,HEROKU
免费提供 200MB 空间。
@user1882503:是的,对于您的代码。这就是你的 git repro 如果你将新文件提交到你的树中,那很好。如果没有,他们就迷路了。容易。
@hakre 你知道在被删除之前有什么方法可以获取或检索这些文件吗?还是有可能?
@Cell 否,这可能就是他们将其称为“短暂”的原因。但也许支持可以帮助您?
哦,是的,我自己做的,只需加入 heroku bash 会话和python manage.py dumpdata > whole.json && cat whole.json
。不确定我刚刚发布的静态资产。【参考方案3】:
请see the docs:
临时文件系统
每个 dyno 都有自己的临时文件系统,以及最近部署的代码的新副本。在 dyno 的生命周期中,它的运行进程可以将文件系统用作临时暂存器,但任何其他 dyno 中的进程都看不到写入的文件,并且在停止或重新启动 dyno 时,任何写入的文件都将被丢弃。
所以你不能用你的 Heroku dyno 节省很多。特别是在您推送新版本后,测功机会重新启动,然后文件系统会重置。
您需要将文件存储到远程位置,然后它们才能在测功机重置后幸存下来。
【讨论】:
以上是关于Heroku部署自动删除服务器文件?的主要内容,如果未能解决你的问题,请参考以下文章