2011-03-01 46 views
1

我正处于完成我的项目的最后阶段(vizulium - 开源摄影CMS)。我有一个最后的绊脚石:更新软件。更新自装PHP文件?

我的想法,我想实现的是:

  1. 检查最新的Vizulium网站版本(页面只显示当前稳定版本)。
  2. 如果存在更新的版本,并且用户要求它:
    a。在Vizulium服务器上压缩更新的文件
    b。将文件下载到用户的服务器
    c。解压缩内容

我已经有一个跟踪系统来跟踪我推送的更新(日期时间)。我还没有开始第2步。所有内容都在PHP和mySQL中。

这是这个问题的典型实现吗?我需要澄清什么吗?

我没有使用FTP,因为它是一个自我安装,我假设用户是编程文盲。

+1

WordPress的使用类似于它的系统 - 你可以挖掘WP源代码来看看它是如何实现的。 – 2011-03-01 04:15:33

+0

在做任何可能覆盖或破坏某些东西的事情之前备份用户的当前数据库数据/文件可能也是一个好主意 – codercake 2011-03-01 04:28:18

+0

erk!因此,您计划在基于Web的系统上实现自修改代码,而不依赖于特权分离,这依赖于文件上载的基本功能!我希望你的安全性能够得到保证。 – symcbean 2011-03-01 10:43:33

回答

0

您的解决方案是有效的,但需要一些额外的考虑因素。

您应该通过HTTPS连接到您的服务器并使用证书验证来查询和获取任何可用的更新。

您应该使用私钥签署您的更新并在应用它们之前让客户端验证更新是否可信。

如果您需要从安装中删除过时的文件,解压缩不会执行此操作,也许每次升级时都会有一个“upgrade.php”脚本,以执行任何额外的必要步骤。

升级脚本应在备份Web目录和数据库之前执行升级,并保留备份,直到用户请求将其删除。

使升级增量增加,所以要从1→3升级,需要先升级到版本2。这对用户来说当然是透明的,但是可以确保版本之间的升级将完成,并且所有数据库更新/修改都以正确的顺序应用。