更新实时网站的最佳做法

时间:2015-11-12 15:19:54

标签: php mysql database version-control

情况:

  1. 我刚刚部署了我网站的第一个版本(在PHP中使用MySQL数据库)。我现在需要转到我网站的第2版。
  2. 我通常在localhost上构建我的网站,然后再将其移至生产服务器
  3. 我现在想要重构我的数据库。但我不清楚如何在不丢失/破坏现有用户数据的情况下这样做。
  4. 我担心在我进行上述更改时,用户可能会尝试对数据库进行编辑。
  5. 为您提出的问题

    1. 我需要在我的服务器上测试我的代码,但我不希望在我这样做时向公众公开。处理这个问题的最佳做法是什么?这里有多种选择吗?
    2. 我们说我在localhost中重构了我的数据库。如何在实时服务器上复制此重组?我是否需要在localhost和生产服务器上运行每个查询? (看起来非常低效 - 有更好的方法吗?)
    3. 我如何确保在重组数据库时, 数据的神圣性没有受到损害(即我如何确保数据 "版本"直到我完成工作,数据库才会改变?)
    4. 让我说搞砸了,我需要"撤消"我的代码的更改。什么是恢复到原始版本网站的最佳方式?我是否需要检索备份版本并丢失任何临时更改?
    5. 是否列出了Do'&关于流程流程?非常感谢任何有用的链接。

2 个答案:

答案 0 :(得分:2)

  1. 您可以在具有不同域的同一服务器上克隆生产站点。例如staging.yourdomain.com并使用密码保护它
  2. 您可以编写包含所有更改的迁移sql文件(ALTER TABLE ...)。然后,您可以在部署过程中执行此迁移文件
  3. 您应该使用像capistrano这样的部署工具来自动化部署过程。
  4. 使用部署工具时,可以执行以下操作:
    • 创建一个目录struture,允许您对这些版本进行符号链接 / www-data - >符号链接到/ releases / version2
      /发行/ VERSION1
      /释放/版本2
    • 将php文件部署在/ releases
    • 下的新目录中
    • 备份您的生产数据库
    • 执行部署所需的任何其他任务(如js minifying)
    • 最后,当每个任务都正常运行时,将符号链接更改为/ www-data为/ release / version3

答案 1 :(得分:0)

对于PHP,有Phinx,一个用于在数据库上编写迁移的库。

对于软件,数据库可以有版本。 Phinx允许您通过API以编程方式编写迁移。每次您添加"迁移"它将创建一个描述所有更改的文件。然后,您必须使用命令行界面(CLI)应用迁移。

至少每天都要保持数据库(表格和数据)的备份。如果手动(或不)更改数据库时发生了不好的事情,那么您将有一个备份来恢复。