PHP 代码部署技巧

标签 php svn deployment build-process

过去,我一直以非常业余的方式进行开发,这意味着我有一台本地机器用于开发和测试代码,还有一台生产机器用于在完成后将代码复制到其中。最近在本地开发的地方稍微修改了一下,把代码 checkin SVN,然后通过SVN更新生产机。

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

  • 拥有一个或多个本地开发环境
  • 在本地机器上开发和测试
  • 使用 SVN(或 Git)作为代码库
  • 使用构建工具设置新环境(开发、暂存或生产)并部署代码

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

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

我知道我的问题听起来可能很困惑……我承认,我是新手,可能离我真正需要的目标有点远。这就是我们非常感谢任何帮助的原因。

最佳答案

我建议将您的测试部署策略设为可用于生产的安装脚本——因为您最终还是会需要其中一个。

一些对某些人来说似乎很明显但值得指出的技巧:

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

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

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

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

关于PHP 代码部署技巧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6233610/

相关文章:

php - 使用唯一/主键插入数据库

visual-studio - Git 还是颠覆?

svn - Nuking svn 存储库中的大文件

eclipse - 如何通过 SVN 在 Subclipse 中复制文件或项目?

ubuntu - 如何检测 Ansible 剧本在执行期间挂起的原因

apache - 如何在 Tomcat 服务器中部署 .aar 文件?

git - 从 bitbucket 部署到实时服务器

php - 处理 100K 条目数据馈送的更有效方法?

PHP 使用 while 循环来获取项目,使用动态选择函数?

php - 如何在后台使用 PHP 和 MySQL 删除数千行?