从heroku中提取实时代码

时间:2012-12-04 07:27:18

标签: php git heroku ftp

我如何获得从live到my repo的更改?在heroku应用程序上运行的文件已经更改,现在如果我推送它们将被覆盖。

我在heroku上运行我的php代码并将“数据库”内容存储在本地文件中。

        {
        "id":1,
        "date":"12/1/2012",
        "topImg":"/img/dates/1.jpg"
        .....

所以这些东西都存储在一个json对象中,然后保存完毕。

2 个答案:

答案 0 :(得分:3)

不要这样做!

本地文件是您的敌人,因为Heroku是一个云应用程序主机,可在多个匿名负载平衡节点上运行应用程序。

也许你现在正在运行一个dyno用于开发目的,但是如果你想让你的网站上线,你至少需要两个dynos(因为Heroku免费套餐服务与他们的非免费服务质量不同等级服务,特别是如果它没有被使用它们将减少一个免费的dyno,但他们永远不会这样做到非自由的dyno)。当你有多个dynos时,使用本地文件进行缓存以外的任何操作将是完全无法管理的。

即使你不知何故永远呆在一个dyno上,Heroku dynos也不能保证保留他们的本地存储 - 例如,如果机器上的硬件故障你的dyno服务,Heroku会毫不犹豫地压低你的应用程序,删除所有本地存储,并仅在加载应用程序代码时再次启动它,因为它不希望您的应用程序使用本地存储来处理任何事情。

没有一种支持方法可以从dyno中获取文件,因为再次,将本地文件存储在dyno上绝不是一个好主意。但是,如果你确实需要这样做,你可以使用heroku run并运行一次性命令,例如,打开一个shell并在某处上传文件。再说一遍:不要因为任何严重的事情而这样做,因为一旦你有多个dynos,几乎不可能管理它们上的文件。

答案 1 :(得分:0)

Totaly同意@Andrew。如果要在这些文档上添加搜索功能,请更喜欢将mongoDB数据库用作heroku:https://addons.heroku.com/catalog/mongolab或elasticsearch的服务:https://addons.heroku.com/catalog/searchbox。有很好的存储json文档,并且有了这些服务,无论你的dynos是什么,你都确信你的数据是持久的。

现在,为了取回你的heroku本地文件,我会做那样的事情:

  1. 使用heroku run bash
  2. 运行heroku bash
  3. 制作scp -pYourPort yourFile(s) userName@yourDestination:/pathToSaveLocaion
  4. 从您的heroku实例注销
  5. 我希望这会对你有所帮助。