Andy's Blog » » 一键升级多个网站

一键升级多个网站

当网站数量有N个的时候,而且用的是自己写的程序,升级将会是一件麻烦事.

现在说说我的解决方案.

Andy 原创,转载请注明出处

比如,有a.com b.com c.com用的是同一个程序

1. 首先,在源站 21andy.com/cms/这里放一个tree.php,内容是递归显示当前目录下的文件(包含相对路径)

2. 21andy.com/cms/放最新的程序文件,以文本输出,不管是PHP还是TXT,都以TXT输出,即访问21andy.com/cms/index.php的时候,显示的是index.php的源代码,为了防止代码泻露,用.htaccess密码保护,限制访问权限

3. 在a.com b.com c.com的根目录,有一个update.php,这个被触发时,自动获取21andy.com/cms/tree.php,然后挨个下载,并替换当前相应的文件,为了保证文件的完整性,在21andy.com/cms/下的源程序,每个文件结尾加一行自定义注释,用来判断下载的文件是否完整,不完整时不替换,也可以用文件长度和MD5值来判断,还有,获取的方法当然要加上用户名和密码,不然可取不到

4. 21andy.com/cms/all_update.php 这个文件用来一键更新所有网站的源程序,里面有这样一个数组 array('a.com','b.com','c.com/cms'); 访问all_update.php的时候,自动挨个触发 相应网站上的update.php

流程很简单, 访问all_update.php 然后它自动访问

a.com/update.php
b.com/update.php
....
而这些update.php,又会自动从21andy.com下载最新的程序并替换自身

如果程序不是经常改动,可以把整个最新程序打包放在

21andy.com/cms/lastest.zip

然后让update.php来下载它,并解压替换自身,然后删除,当然,也要加上文件长度和md5验证一下.

Andy 原创,转载请注明出处

我不用压缩包的原因就是我经常开着ssh上去改动,不需要一直去打包

Tags: cms, 升级, 解决方案

本文地址: http://www.21andy.com/new/20080302/1038.html

4 评论 to “PHP开源CMS之MODx”

  1. Denis 于 2008-03-03 00:18:38 发表:

    你是怎么做的?那些站点?

  2. adex 于 2008-03-04 15:15:58 发表:

    用svn + crontab 不是更容易

    Andy 于 2008-03-04 19:15:55 回复:

    svn...wordpress的插件系统就是用的svn,我装了客户端,不会使.我的办法虽然很土,但是管用,而且自己能100%了解了控制

  3. hopol 于 2008-03-11 08:12:10 发表:

    感觉有点像[email protected] 网吧游戏更新的 增量更新包 的方式[email protected] 呵呵[email protected]