因此,我需要能够对WordPress网站进行开发/阶段/生产迭代(通过单独的服务器),我通常使用git,但这显然不适用于WordPress网站,因为它主要依赖于数据库配置...好吧,几乎所有东西。
所以我的问题是你们如何做到的?我有一个快速的Google,看到有一些插件,这是唯一的方法吗?在易用性,速度,可靠性,用户界面等方面,哪个工作最出色?
因此,我需要能够对WordPress网站进行开发/阶段/生产迭代(通过单独的服务器),我通常使用git,但这显然不适用于WordPress网站,因为它主要依赖于数据库配置...好吧,几乎所有东西。
所以我的问题是你们如何做到的?我有一个快速的Google,看到有一些插件,这是唯一的方法吗?在易用性,速度,可靠性,用户界面等方面,哪个工作最出色?
Answers:
我有一个非常引以为傲的设置,它对我的团队来说非常有效。
我将整个安装保持在git下。所有更改(包括系统更新,添加/更新插件,添加/更新主题)都需要遵循相同的工作流程。更改可以立即回滚。我有一台运行gitosis的部署服务器(旧的P4桌面),但您可以轻松使用github或gitolite。在git中,我有两个“特殊”分支,master
并且develop
(下面有更多说明)。我的生产和登台服务器都是基于云的。
每个开发人员都在自己的计算机上运行自己的开发服务器。在数据库方面,几乎不需要实时数据。我们主要使用主题单元测试数据。否则,进出口涵盖了大多数事情。如果数据库块至关重要,则可以设置复制或设置一些用于按需同步。当我最初设置此结构时,我认为这至关重要,因此我开始编写一组工具来执行此操作,但令我惊讶的是,它们确实不是必需的。(注意:由于它们不是必需的,所以我从未对它们进行完善,因此存在一些错误,例如它将替换序列化数据中的域)。
当提交从develop
分支推送到gitosis时,它们会自动部署到我们的登台服务器。登台数据库是生产数据库的从属数据库。
当将提交推送到master
分支上的gitosis时,它将自动部署到生产服务器。
您希望wp-config.php
在服务器之间是唯一的,但还希望将其保持在版本控制之下。我的解决方案是使用.gitignore
忽略wp-config.php
并将暂存和生产版本存储为名称不同的文件。然后在每个服务器上,我进行符号链接,例如wp-config.php -> wp-config-production.php
。然后,每个用户都使用自己的凭据以及自己的(未跟踪的)wp-config.php设置来保留自己的数据库。
我使用了Rackspace Cloud,它既便宜又便宜。有了它,我可以使登台服务器和生产服务器保持一致。我现在也正在编写使用其API的插件,以允许我从WordPress内部直接控制我的服务,这真是太好了。
缓存目录,文件上传目录等都添加到.gitignore中。如果您愿意,可以设置一个cron任务来定期检查上传的内容并将其推送到gitosis,但这对我来说似乎从来没有必要。
主/开发结构设置为部分模仿Vincent Driessen的分支模型。我也使用他的git扩展名git-flow,我也强烈建议这样做。
我已经有10个左右的开发人员使用这种结构进行了一年多的工作,与之合作一直是我的梦想。可靠,安全,快速,功能强大且敏捷,您别无所求!
首先,我认为其重要的考虑因素是什么你要版本控制。我建议不要将整个WP目录放在VC下。我认为将wp-content / themes / YourThemeName放在VC下是最有意义的。对于具有大量复杂插件的大型站点,我也可以看到包括wp-content / plugins的情况。如果绝对必要,则可以包含wp-content / uploads。下面的答案会有所变化,具体取决于您所控制的版本。
鉴于此,这是我使用的:
本地:在计算机上设置LAMP堆栈。使用与您的开发站点相同的URL。使用VirtualHosts和.host文件条目从URL角度模拟开发环境。如果您只是使用VC作为主题,请考虑使用SSHFS链接到wp-content / plugins,wp-content / uploads。除非您确实要做一些繁重的工作,否则请考虑在项目的开发安装中使用数据库。
开发:将回购的工作副本检入WP环境。在SVN中设置一个POST-COMMIT挂钩,以在每次提交时更新此仓库。这将使其保持同步。(考虑到一个穷人的不断融入。)
生产:签出代表最终候选人的命名版本标签。当您需要使用新版本时,请切换标签并更新存储库。
我用git和mercurial做到这一点,只要确保您使用的是私人仓库。
选项1。
唯一的问题是config.php,您可以告诉git在push或init之前忽略它。
使用.gitignore
或git update-index --assume-unchanged config.php
(在使用之前,先阅读一下假定不变的命令)
选项2。
在config.php中使用一个条件来检查URL并应用正确的凭据,并遵循“如果服务器url = dev,则使用凭据A,否则使用凭据B”,依此类推。
马克对此作了更好的解释,http://markjaquith.wordpress.com/2011/06/24/wordpress-local-dev-tips/
ps。您也可以直接从远程存储库中管理文件,而不必使用传统的“文件服务器”。(我制作的有关此http://www.youtube.com/watch?v=8ZEiFi4thDI的视频真的很无聊)