crazedsanity/webdbupgrade

用于处理Web应用程序脚本升级的库

v0.1.0 2016-11-08 20:42 UTC

This package is not auto-updated.

Last update: 2024-09-20 22:12:56 UTC


README

注意: 这份文档仍在不断完善中,所以将其视为更多指南而不是规则。如果您发现其中有任何错误,请修复它并通过拉取请求或您希望的方式告诉我...或者告诉我有关它的信息。或者处理它...无论您更喜欢哪种方式。

预设观念

CS Web DB Upgrade 是基于对您的 Web 应用程序的几个预设观念构建的。

  1. 存在一个“生产”应用程序的概念
  2. 存在一个测试环境,其中测试更改
  3. 升级是脚本化的(模式、数据库值、文件系统事物等)

可以将系统配置为每次查看页面时自动升级,通过自定义 shell 脚本,或者...您想怎么都行。这是您的应用程序。

它做什么

CS Web DB Upgrade 是为了使数据库驱动的 Web 应用程序的升级无缝。而不是手动按特定顺序更改事物,通过脚本自动化此过程!

旧方法

  1. 手动“标记”网站为维护中(用响应所有请求的“维护中”或类似内容的网站替换)
  2. 手动更新代码(通过解压缩 zip 文件或使用 SCM 命令(如 svn updategit pull)覆盖它)
  3. 手动运行模式更改
  4. 手动更新现有记录
  5. 手动修复现有配置文件
  6. 手动修复现有杂项文件(例如,图像路径)
  7. 希望一切顺利...如果不顺利,修复它们,也许要祈祷和流汗
  8. 手动“取消标记”网站为维护模式(见 #1)

您看到了一个模式吗?

遇见您的救星!这个系统增加了允许您的系统自动升级的能力。每次您在 VERSION 文件中增加版本时,它都可以运行一个自定义脚本,该脚本将执行您所需的所有操作,并且直到完成之前都将其他人拒之门外。一旦系统更新,下一个触摸包含升级系统的代码将导致它运行。

新方法

  1. 手动(或自动)更新应用程序
  2. 运行升级脚本(通常在应用程序使用时自动运行)

就是这样!如果升级因任何原因失败,特殊的“锁定文件”将自动将您的应用程序置于“维护模式”,防止用户访问数据库。而且这让您免于必须进行任何特殊操作才能打开那个“维护模式”。太棒了!

如何使用 CS Web DB Upgrade

以下步骤有助于您尽可能少的麻烦地开始。一旦您熟悉了这个系统,您就能做几乎所有您想做的事情。

创建一个文件,upgrades/upgrade.ini。最重要的部分是“main”部分。以下是一个示例

[main]
initial_version=0.0.1

[v0.0.1]
target_version=0.0.2
script_name=upgradeTo0.0.2.php
class_name=upgrade_to_0_0_2
call_method=run_upgrade

[v0.0.2]
target_version=0.1.0
script_name=upgradeTo0.1.0.php
class_name=upgrade_to_0_1_0
call_method=run_upgrade

[v0.3.5-ALPHA1]
target_version=0.3.5-BETA2
script_name=upgradeTo0.3.5-BETA2.php
class_name=upgrade_to_0_3_5_BETA2
call_method=run_upgrade

[v0.3.6]
target_version=1.0.0
script_name=upgradeTo1.0.0.php
class_name=upgrade_to_1_0_0
call_method=run_upgrade

流程应该是相当明显的。每个索引(排除“main”)都被解析为一个版本。因此,升级路径为

0.0.1 -> 0.0.2 -> 0.0.2 -> 0.1.0 -> 0.3.5-ALPHA1 -> 0.3.6 -> 1.0.0

因此,如果有一个现有安装,数据库中的版本为 0.2.0,则会运行从 0.3.5-ALPHA1 开始的所有脚本,以便将其升级到当前版本,该版本可能是至少 1.0.0(尽管它可能是 1.0.1 或更高版本;并非所有升级都需要脚本化更改)。