WordPress网站的开发,阶段和生产部署?


41

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

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


pantheon.io具有针对单个域的开发,测试和支持。他们使用git来存储文件,并单击一下即可在它们之间传输数据库。它是免费的尝试,当你去“活”您只需支付- youtube.com/watch?v=KpGTDeqwgX4
jgraup

Answers:


27

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

总体结构

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

开发环境

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

暂存环境

当提交从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,但这对我来说似乎从来没有必要。

主/开发结构设置为部分模仿Vincent Driessen的分支模型。我也使用他的git扩展名git-flow,我也强烈建议这样做。

我已经有10个左右的开发人员使用这种结构进行了一年多的工作,与之合作一直是我的梦想。可靠,安全,快速,功能强大且敏捷,您别无所求!


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

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

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

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

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

4

首先,我认为其重要的考虑因素是什么你要版本控制。我建议不要将整个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。
Wyck

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

2

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


2

我用git和mercurial做到这一点,只要确保您使用的是私人仓库。

选项1。

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

使用.gitignoregit 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的视频真的很无聊)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.