zet*_*run 34 ruby deployment capistrano heroku uptime
推送到Heroku的一个不好的方面是我必须在运行数据库迁移之前推送代码(并且服务器自动重启).
这显然会导致用户在没有新表/属性的情况下浏览具有新代码的网站时出现大约500个错误:Heroku提出的解决方案是使用维护模式,但我想要一种没有缺点的方法让我的webapp每次都运行!
有办法吗?例如Capistrano:
......我没有停机时间!
jsh*_*kol 22
您可以设置第二个Heroku应用程序,该应用程序指向与主要生产应用程序相同的数据库,并使用辅助应用程序运行数据库迁移而不会中断生产(假设迁移不会破坏以前版本的应用程序).
我们打电话给Heroku应用程序生产和分段.
您的部署顺序将类似于:
git push heroku stagingheroku run -a staging-app rake db:migrategit push heroku production暂存应用程序不会花费任何费用,因为您不需要超过Heroku的免费套餐,设置rake部署脚本自动执行此操作将非常简单.
祝好运!
改善这个过程的唯一方法就是这个家伙的建议.但这仍然不是热部署方案:
http://casperfabricius.com/site/2009/09/20/manage-and-rollback-heroku-deployments-capistrano-style/
我建议的一件事是,在推送代码库之前,首先只将迁移推送到Heroku并运行它们.这将需要将迁移作为独立提交提交并每次手动推送它们(这不是理想的).我很惊讶现在Heroku上托管的所有大型应用程序都没有更好的解决方案.
Heroku 无法通过 capistrano 部署。你被heroku发布的工具阻止了。
不停机系统在所有情况下都是不可能的。如何在不停止服务器的情况下对架构进行重大更改。如果您不停止它,您可以避免一些更改,并且您的数据库可能会不一致。所以使用维护页面是一个正常的解决方案。
如果您想要一个小的解决方案来避免问题,那就是平衡两台服务器。一种在迁移期间仅读取数据库的数据库。您可以在迁移期间切换到此实例,从而避免维护页面。迁移后,您将回到您的主人身边。
| 归档时间: |
|
| 查看次数: |
9740 次 |
| 最近记录: |