0

我想接一个项目,但我不确定如何处理更新过程。

通常,当要求更新站点时,您备份数据库和站点文件,然后在本地或开发服务器上进行更新。然后,当更新完成后,您将它们推送到现场。

我的问题是,我要工作的网站每天都会注册新成员,每天发布博客帖子,并且每天都会收到关于这些帖子的新评论。如果我要在周一拉出该网站,在测试环境中对其进行更新,然后在周五实时推送这些更改,那么每周注册的每个成员和撰写的博客条目都将被覆盖。

那么这样做的最佳方法是什么?如何在开发过程中在不丢失实时站点上获得的数据的情况下向站点更新/添加功能?这肯定是可能的,因为像 TechCrunch 和 Gizmodo 这样的高流量网站一直在进行大规模的全站更新而不会丢失数据。

4

2 回答 2

4

这取决于您要进行哪些更改。是文件/模板更改还是数据库更改?

如果只是文件更改,只需将文件和数据库拉到本地服务器,对文件进行更改,然后在完成后将它们(仅限文件)推送到实时服务器。只要没有发生数据库更改,这将起作用。

如果有数据库更改,事情会变得有点棘手。您基本上会遵循相同的过程,但请记下您在本地站点上所做的任何数据库更改。当一切都准备好推送到实时服务器时,您别无选择,只能在更新时让用户离线站点。

然后,您会将所有更新的文件推送到实时服务器,并镜像您在本地服务器上所做的任何数据库更改(安装/更新插件等)。当所有这些都完成并经过测试后,您就可以再次将该网站上线。如果您对数据库更改做了很好的记录,那么停机时间应该是最短的。

这取决于能够阻止用户访问但仍允许您自己访问,但这是大多数 CMS 的标准。

此外,如果您还没有,您应该考虑将 git 集成到您的工作流程中。如果您将要进行的更改需要花费大量时间,您将需要一个系统,您可以在其中将代码分支到新版本,同时仍保持实时服务器上代码的原始状态。

这样,如果您在本地开发新功能时需要对实时站点进行紧急修复,您可以切换回您的主/原始分支并更改不包含任何内容的代码你一直在另一个分支上工作的新东西。

于 2012-08-17T10:52:27.837 回答
0

好吧,我只为小流量的 wordpress/drupal 网站做过这个,但没有“实时”版本对我来说不是问题。我有我的开发副本,测试我想要的更改,然后通过 FTP 备份将这些更改即时发布到实时站点。

您要编辑这些注册吗?或者你只是在调整静态文件?

在 wordpress 的情况下,我测试了一个插件,然后将其安装在实时站点上。通常,我所做的更改涉及插件/模块和一些 PHP 的东西。这显然不是最细致入微的解决方案,我很想看看知识渊博的人有什么想法。

于 2011-12-15T15:42:19.050 回答