问题描述

所以我需要能够对 WordPress 网站进行 dev / stage / production 迭代 (通过单独的服务器),我通常使用 git,但这显然不会与 WordPress 网站一起使用,因为依赖数据库为主配置… 好,几乎一切。

所以我的问题是你们怎么做?我有一个快速的 Google,看到有几个插件,这是唯一的方法吗?哪些人在易用性,速度,可靠性等方面做得最好?

最佳解决方案

我有一个设置我很自豪,它对我的​​团队非常好。

一般结构

我保持整个安装在 git 下。所有更改,无论是系统更新,添加/更新插件,添加/更新主题,都可以通过相同的工作流程。变更可以暂时回滚。我有一个运行 gitosis 的部署服务器 (一个老 P4 桌面),但您可以轻松使用 github 或 gitolite 。在 git 中,我有两个”special” 分支,masterdevelop(以下解释) 。我的生产和分期服务器是 cloud-based 。

发展环境

每个开发人员都在自己的机器上运行自己的开发服务器。在数据库方面,需要实时数据几乎不是一个问题。我们主要使用 theme unit test data 。否则出口和进口涵盖大部分事情。如果数据块是至关重要的,您可以设置复制或设置 on-demand 同步的内容。当我最初设置这个结构时,我认为这是至关重要的,所以我开始写一个 set of tools 来做到这一点,但令我吃惊的是,他们真的没有必要。 (注意:由于它们没有必要,我没有抛光过,所以有 bug,例如它会替代序列化数据中的域) 。

分期环境

当提交从 develop 分支推送到 Gitosis 时,它们会自动部署到我们的分段服务器。分期数据库是生产数据库的从属。

生产环境

master 分支上的提交被推送到 gitosis 时,它会自动部署到生产服务器。

wp-config.php 问题

您希望 wp-config.php 在服务器到服务器上是唯一的,但您也希望将其保留在版本控制之下。我的解决方案是使用.gitignore 来忽略 wp-config.php,并将登台和生产版本存储为 differently-named 文件。然后在每个服务器上,我的符号链接 wp-config.php -> wp-config-production.php 。然后,每个用户都使用他们自己的凭据 (未跟踪)wp-config.php 设置自己的数据库。

其他注释

我使用 Rackspace Cloud,这是非常现代和便宜的。有了它,我可以使我的分段和生产服务器保持一致。我现在也在编写插件,使用他们的 API 来允许我从 WordPress 中控制我的服务,这是非常好的。

缓存目录,文件上传目录等都添加到.gitignore 。如果你想要的话,你可以设置一个 cron 任务来定期检查上传内容并将它们推送到 gitosis,但对我来说似乎是不必要的。

主/开发结构设置为部分模仿 Vincent Driessen’s branching model 。我也使用他的 git 扩展名 git-flow,我也强烈建议。

我已经有 10 个左右的开发人员在这个结构上工作了一年多了,这是一个梦想。可靠,安全,快速,功能和敏捷,您不能要求更多!

次佳解决方案

首先,我认为重要的是考虑你将要进行版本控制。我建议不要把整个 WP 目录放在 VC 下。我认为最有意义的是,将 wp-content / themes / YourThemeName 放在 VC 下。对于具有大量复杂插件的大型站点,我可以看到包括 wp-content /插件的情况。如果您绝对必须,您可以包括 wp-content /上传。下面的答案会有所变化,具体取决于您的版本控制。

鉴于此,我使用的是:

本地:在机器上安装 LAMP 堆叠。使用与开发网站相同的网址。使用 VirtualHosts 和.host 文件条目从 URL 的角度模拟开发环境。如果您只是 VC 主题,请考虑使用 SSHFS 链接到 wp-content /插件,wp-content / uploads 。考虑在您的开发安装项目中使用数据库,除非您真的做了一些重的工作。

开发:将您的 Repo 的工作副本结帐到您的 WP 环境中。在 SVN 中设置一个 POST-COMMIT Hook,以便在每次提交时更新此 repo 。这将保持同步。 (考虑一个穷人的持续整合)

生产:查看代表最终候选人的命名版本标签。当您需要使用新版本时,切换标签并更新 repo 。

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。