PHP代码部署技巧

Ste*_*eve 25 php svn deployment build-process

在过去,我一直在以非常业余的方式开发,这意味着我有一个本地机器,我开发和测试代码和生产机器,我在完成后复制代码.最近我把它稍微修改到我在本地开发的地方,检查代码到SVN然后通过SVN更新生产机器.

现在我想开始一个新项目并改进我的工作流程.理想情况下,我有以下几点:

  • 拥有一个或多个本地开发环境
  • 开发和测试本地机器
  • 使用SVN(或Git)作为代码存储库
  • 使用构建工具设置新环境(dev,staging或production)和部署代码

由于我不熟悉这个过程,我正在寻找有关如何最好地设置这个想法和使用工具的建议,特别是在构建工具方面.我正在研究Ant和Phing(可能是make),但我对此很新,我真的想得到一些指导.有没有关于PHP部署的好的教程或书籍,特别是对于初学者?我特别感兴趣的是以下主题:

  • 部署到具有不同设置的不同类型的服务器(例如,dev使用不同的db,db密码,PHP错误报告而不是生产或暂存).
  • 部署,自动从SVN中提取代码.
  • 临时为生产环境设置"维护"页面的部署.
  • 一旦掌握了上述内容,甚至可以在构建过程中进行一些测试.

我知道我的问题可能听起来很混乱......我承认,我是新手,并且可能在我真正需要的时候有点偏离目标.这就是为什么我们非常感谢任何帮助.

tyl*_*erl 3

我建议将您的测试部署策略设为生产就绪的安装脚本——因为无论如何您最终都将需要其中一个。

一些提示对某些人来说可能是显而易见的,但值得指出:

  • 保存在 VCS 中的配置文件应该是一个模板,并且名称应与最终包含实际设置的文件不同。例如config-dist.phpconfig-sample.confsample/config-mysql.php或类似的东西。否则,您最终会意外地在模板上签入特定于服务器的配置文件。
  • 对于 PHP 部署,预计某些用户将无法通过 Web 服务器本身以外的任何机制运行服务器端脚本。基于 PHP 的安装程序几乎是没有商量余地的。
  • 您应该包含一个消费者友好的更新机制,为此,wordpress 是一个很好的模仿项目示例。PHP 脚本可以 (a) 下载最新版本,(b) 使用ftp函数更新应用程序的文件,以及 (c) 执行对数据库进行适当更改的更新脚本等。
  • 看在老天的份上,不要像 [ redacted ] 那样让您的用户为每个点版本下载并安装单独的补丁。让他们下载包含迄今为止所有更新的最新(最终)版本,并按ALTER TABLE顺序应用正确的功能。

无论文件是通过 SVN 还是通过 FTP 部署,安装/更新机制都应该相同:获取最新文件,运行更新脚本。更新程序使用 PHP 脚本中列出的版本和数据库中列出的版本,并使用这些知识按顺序应用适当的数据库补丁。至于如何生成这些补丁,这里还有其他问题,您可以参考以获取更多信息。

至于“维护”页面,只需使用上面提到的版本技巧来触发它(将数据库中的版本与PHP代码中的版本进行比较)。能够将站点标记为对公众“关闭”但使其对管理员可见(就像 Joomla 那样)也很有用,您可以通过数据库或文件系统标志触发该站点。

至于从 SVN 自动提取代码,我想说你最好使用 cron 脚本或提交触发器,而不是将其放入应用程序中,因为它与最终用户无关。