我建议你的测试部署策略是一个生产就绪的安装脚本 – 因为你最终需要一个。
一些提示,对一些可能看起来明显,但值得指出:
>您的配置文件保存在您的VCS应该是一个模板,并且应该命名不同于最终将包含实际设置的文件。例如。 config-dist.php或config-sample.conf或sample / config-mysql.php或者沿着这些行的东西。否则,您将意外地检查模板上特定于服务器的配置文件。
>对于PHP部署,预计一些用户将无法通过Web服务器本身以外的任何机制运行服务器端脚本。基于PHP的安装程序几乎是不可协商的。
>你应该包括一个消费者友好的更新机制,为此,wordpress是一个很好的例子,一个项目来模拟。 PHP脚本可以(a)下载最新版本,(b)使用ftp函数更新应用程序的文件,以及(c)执行更新脚本,对数据库进行适当的更改等。
>为了天堂的缘故不要这样做[编辑],并让您的用户下载并为每个点版本单独安装补丁。让他们下载最新的(最终)版本,其中包含所有到目前为止的更新,并按顺序应用正确的ALTER TABLE函数。
无论文件是通过SVN还是通过FTP部署,安装/更新机制应该是相同的:获取最新的文件,运行更新脚本。 updater使用PHP脚本中列出的版本和DB中列出的版本,并使用该知识按顺序应用适当的数据库修补程序。至于如何生成这些补丁,这里有other questions,你可以参考更多信息。
至于“维护”页面,只需使用上面提到的版本技巧来触发它(比较DB中的版本和PHP代码中的版本)。将一个网站标记为“down”给公众,但让管理员(如Joomla)可以看到,你可以通过数据库或文件系统标志触发,这也是有用的。
对于从SVN自动拉取代码,我想说你最好使用cron脚本或提交触发器,而不是在应用程序中,因为它不会与最终用户相关。