因此,我需要能够对WordPress网站进行开发/阶段/生产迭代(通过单独的服务器进行),我通常使用git,但是由于主要依赖数据库,因此这显然不适用于WordPress网站。配置...好吧,几乎所有东西。

所以我的问题是你们如何做到的?我有一个快速的Google,发现其中有一些插件,这是唯一的方法吗?在易用性,速度,可靠性,UI等方面,哪项工作最出色?

评论

pantheon.io具有针对单个域的开发,测试和运行的功能。他们使用git来存储文件,并单击一下即可在它们之间传输数据库。免费试用,只有当您上线时才需要付费-youtube.com/watch?v=KpGTDeqwgX4

#1 楼

我有一个非常引以为傲的设置,它对我的​​团队来说非常有效。

常规结构

我将整个安装都保留在git下。所有更改(包括系统更新,添加/更新插件,添加/更新主题)都需要遵循相同的工作流程。更改可以立即回滚。我有一台运行gitosis的部署服务器(旧的P4桌面),但您可以轻松使用github或gitolite。在git中,我有两个“特殊”分支,即masterdevelop(在下面进行更多说明)。我的生产和登台服务器都是基于云的。

开发环境

每个开发人员都在自己的计算机上运行自己的开发服务器。在数据库方面,几乎不需要实时数据。我们主要使用主题单元测试数据。否则,进出口涵盖了大多数事情。如果数据库块至关重要,则可以设置复制或设置一些用于按需同步。最初设置此结构时,我认为这很关键,因此我开始编写一组工具来执行此操作,但令我惊讶的是,它们确实不是必需的。 (请注意:由于没有必要使用它们,因此我从未进行过完善,因此存在一些错误,例如它将替换序列化数据中的域)。

暂存环境

将提交从develop分支推送到gitosis时,它们会自动部署到我们的登台服务器。临时数据库是生产数据库的从属数据库。

生产环境

将提交推送到master分支上的gitosis后,它将自动部署到生产服务器。 />
wp-config.php问题

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

其他说明

我使用Rackspace Cloud,惊人而便宜。有了它,我可以使登台服务器和生产服务器保持一致。我现在也正在编写​​插件,使用它们的API可以直接从WordPress内部控制我的服务,这真是太好了。 gitignore。如果您愿意,可以设置一个cron任务来定期检查上传文件并将其推送到gitosis,但这对我来说似乎从来没有必要。模型。我也使用他的git扩展名git-flow,我也强烈建议。一起工作。可靠,安全,快速,功能强大且敏捷,您别无所求!

评论


我将以类似的方式设置wp安装(但我们使用svn),我想确认您的更新插件和wp的过程:完成更新并检查开发,提交更改,将它们部署在阶段,检查,依靠现场。总而言之,您实际上从未在通过回购中的更新带来更改的实时服务器上进行wp安装更新吗?

–paullb
13年2月4日,下午2:34

如何由更新例程对数据库进行更改。这些对生产数据库有何影响?

–paullb
13年2月4日在3:20

该工作流程是正确的@paullb,您不必担心数据库更新。 WordPress的工作方式是,在检测到更改后触发更新,因此它的工作原理与手动更新(对核心或插件)的工作原理完全相同!

–马修·博因斯(Matthew Boynes)
13年2月5日在18:04

@MatthewBoynes,你好。您还在使用此工作流程进行开发吗?如果是这样,我将将此工作流程应用于我的项目。谢谢 :)

–卡其色
2014年7月20日下午6:44

我不是,但这仅仅是因为它不适用于我目前正在从事的项目,这些项目主要托管在WordPress.com VIP上。如果适用,我仍然会使用它(实际上,我之前工作的公司确实会继续使用它)。

–马修·博因斯(Matthew Boynes)
14年7月21日在13:49

#2 楼

首先,我认为考虑版本控制是很重要的。我建议不要将整个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 wordpress每30分钟自动更新一次,除了分散管理和为团队更好地工作外,我还不知道;没有人迁移到git / hg使用svn。

–维克
2012年2月4日19:31



只是好奇您没有将整个WP目录置于版本控制下的原因。这似乎是工作流程中的瓶颈。将WP放入存储库中可为所有开发人员提供相同的代码库和WP版本。它还允许跨环境的一致性。请参阅Wyck的链接(在他的答案上)到有条件的wp-config文件。

– Brian Fegter
2012年2月5日在7:37



#3 楼

我们最近发现了RAMP。注意:这只是整个过程的一部分,但是在服务器之间同步内容数据库可能是其中最困难的部分。

#4 楼

我使用git和mercurial进行此操作,只需确保您使用的是专用存储库。

选项1。

唯一的问题是config.php,您可以告诉git在push或init之前忽略。

使用.gitignoregit update-index --assume-unchanged config.php(在使用前先了解一些假设不变的命令)

选项2。

在config.php中使用一个条件来检查url并应用正确的凭据,并遵循“如果服务器url = dev然后使用凭据A,否则使用凭据B”等。

Mark对此进行了更好的解释,http://markjaquith.wordpress.com/2011/06/24/wordpress-local-dev-tips/

ps。您也可以直接从远程存储库中管理文件,而不必使用传统的“文件服务器”。 (我制作的有关此http://www.youtube.com/watch?v=8ZEiFi4thDI的视频真的很无聊)