我不是一个WordPress的开发者,但我想确定一队人与WordPress的工作的最佳方式。 对于Rails项目或最别的,它很容易在当地工作和部署的上游,但我的理解是,WordPress的不使这个那么容易。 也许这是一个神话?
从我收集,这并不少见,URL和文件路径被存储在其中似乎将难以部署从开发一个WP项目数据库 - > STG - >珠三角(其中每个环境都有它自己的网址并可能不同的文件路径),对于个人开发者更拥有自己的开发环境,将需要进行“合并”成部署统一的副本。
我可以配置所有的开发者沙箱使用一个单一的数据库,但在这里再次,如果URL和文件路径存储,然后什么也不获得。
有一系列的小问题在这里,但我越去想那些,我越意识到我真正要求的是如何组织的事情会被砍死在WordPress网站的最佳发展建议开发团队。 我宁愿沙盒的方法,我们使用的其他项目,但我不知道是否/如何的东西是可以统一的,一旦全部开发完成。
Li'l帮助吗?
谢谢。
警告:文本的传入墙..
@Rob,WP是地狱,当谈到在团队中工作; 然而,随着一点点工作(和一些神奇的符号链接),你可以设置你的WP项目,让你的主题或插件,你的工作文件可以从WP核心独立存在的。 一些本采用WP内置的机制,有一些是涉及到SVN的外部(提示)。 我会让你谷歌认为,因为它是你的问题的范围之外。
在WP的GUID的注意事项
警告:不要更换的GUID。 WP GUID是有外部feed阅读器。 feed阅读器使用GUID来确定内容是最近的事。 更改它主要是告诉那些读者,在饲料中的每个条目是新的(特别是对职位。),介绍了很多您刚刚不需要的旧内容额外的开销。 GUID是应该已经改变了很久以前的UUID的原有功能。 传统 - 从技术上讲,你可以诠释他的GUID字段,但WP采用固定链接来填充字段中使用任何内容。
这是有史以来接受改变GUID唯一的一次,新的WP项目中的内容是品牌spankin'新。
要回答你的问题:
在十几个地方在它的DB当前域WP商店明确提及。 这些位置是一个痛苦的跟踪和改变,你想要做的最后一件事是处理手动编辑的* .SQL转储文件,你要导入生产。 它只是嫌不好的开发实践。
有几种方法可以解决这个问题,但它意味着工作的一点点,如果你已经进一步下跌的开发周期。 我会针对第一种情况。
案例1:发病项目
当你开始这个项目,你可能有一个发展沙箱和DB准备。 那么就要WP已经安装了现在,所以它是所有意图和目的基本上是干净的。
你会想要做的第一件事就是改变你的配置文件是如何工作的。 大多数人保持与标准wp-config.php
文件(超出一个团队生产项目,真的有没有任何理由对其进行编辑。)但是,你可以用一些逻辑将它设置为包括或特定的环境特定的开发人员配置文件。 例如:
WP-config.php文件
switch( $current_environment )
{
case 'jack.local' : include( 'wp-config-jack.php' ) break; // Jack's sandbox
case 'jill.local' : include( 'wp-config-jill.php' ) break; // Jill's sandbox
default : ... break; // Staging & Production
}
你会想要做的下一件事是包括正常内容wp-config.php
在文件wp-config-remote.php
对分期/生产使用的文件。 接下来,编辑您的wp-config-remote.php
文件,以便您可以使用跨多个环境(分期,生产)1个配置文件。 一个if(...)
或switch(...)
块是你所需要的,如
if( (strpos( $_SERVER[ "HTTP_HOST" ], "localhost" ) !== false) || (strpos( $_SERVER[ "HTTP_HOST" ], "local" ) !== false) )
(有更好的方法来编写条件......这仅仅是一个最原始的例子。)
配置所有的WP设置具体到每一个远程环境。 希望你会被检查到源控制库这一点。
这基本上释放您,让您的团队成员具体到他们的环境中的配置设置,同时让你在设置检查每个远程环境的一次 。
你会想要做的第二件事是建立一个机制,使拦截和过滤特定域的链接。 这背后的机制,其目的是用令牌/占位符替换当前域的任何引用。 我已经概述的技术在这里做到这一点: http://www.farfromfearless.com/2010/09/07/url-token-replacement-techniques-for-wordpress-3-0/
它基本上相当于创建过滤器之前它提交到数据库和内容呈现到页面之前作用于内容。 该技术是因为它不会影响到正常的编辑实践透明。 您仍然可以创建在编辑器中的内容,参考其他页面,文章,图片等,他们会出现就好了,而在不同的环境中进行编辑。
在最近的项目中,我裹着这一切以及其他一些WP“常态化”的特点,到我设置和忘记一个引导插件。
案例2:正在进行的项目
现在,你的情况,你是进一步沿着你的开发周期。 这将需要一些工作,以取代那些域引用,但是如果你遵循的步骤我有轮廓上面你应该只曾经有这样做一次。 我上面提供的链接给你,你需要做的工作的SQL。 需要注意的是,在多站点环境中,你需要为每个“子网站”你已经创建做到这一点是很重要的。
一旦你更新你的数据库,我建议实施案例1中的步骤,这样你就不必再重复这些步骤。
奖励:同步内容
同步内容是一种痛苦。 我已经在最近的项目做的是有客户临时服务器上运行,并推动改变上游生产。 那么,是给你留下下游同步到您的沙箱(ES)。 编写转储具体内容表的副本,从您的临时数据库,并将其导入到你的沙箱DB shell脚本(有效地取代内容表。)你应该能够看到域令牌替换技术的好处。
未检入源控制图像,例如客户端的图像应该被推到一个共同的位置,例如一个S3铲斗。 有WP的插件,可以帮你。 这将节省大量的时间具有不同环境资产同步。
我希望这可以帮助你 - 如果没有,总有SilverStripe;)
很容易我们建立了一个开发服务器上,并挪活服务器与此SQL查询:
UPDATE wp_posts SET guid = REPLACE(guid, 'devserver.com', 'liveserver.com');
UPDATE wp_posts SET post_content = REPLACE(post_content, 'devserver.com', 'liveserver.com');
UPDATE wp_options SET option_value = REPLACE(option_value, 'devserver.com', 'liveserver.com');
去年我写了一个bash脚本,以反映现场MU安装到一个沙盒。 这不是完美的,不理想,但一个很好的起点。 它包括镜像数据库,文件和重写镜像数据库,以反映沙箱。
见http://pp19dd.com/2011/01/bash-script-to-mirror-wordpress-mu-installation-into-a-sandbox/
为开发者能够采取现场和详细内容的快照复制的条件是很重要的。
我只是碰到了这个问题我自己推出一个新的网站。 我的解决方案是使用放浪 。 流浪也是与平台无关,所以你可以制定关于在Mac和队友正在使用Windows。 同流浪项目上都运行。
我写了一篇关于如何使用WordPress的从你的机器上本地运行的生产环境设置流浪了一个指南。 我不使用WordPress的经常但我每次做它始终是一个麻烦,设置Apache和PHP我的Mac上的时间,然后确保所有的WordPress站点的URL在数据库中更新。
一旦你已经配置了流浪的项目,它在你的团队开发的任何一个命令来启动并运行与WordPress的本地实例。 总之,流浪将在来宾计算机从您的主机安装您的项目目录,并运行Apache,MySQL和PHP通过客户机。 你仍然可以使用您的主机的IDE(像往常一样),你的主机上的浏览器。 没有上传文件的任何地方,它只是代码,保存,刷新浏览器都在本地机器上。
http://www.distilnetworks.com/wordpress-development-with-vagrant/ < -介绍如何使用放浪设置这一切
https://gist.github.com/markmalek/fd2e6e65385400d9cd47 < -供应流浪当外壳脚本
shell脚本可能会好很多,这是为我工作,但我很乐意听到一些更好的建议或想法。 我是新来的流浪汉,现在将它用于我们的一些其他项目,从而认为这将是一个不错的选择这里。
我做更新的shell脚本,我在另一个答案,你不应该这样做,因为饲料读者使用读过GUID。 在这种情况下,由于其只是WordPress的的本地实例,但我不会使生产这种变化的不相关的。 见这个答案为更好的解释。
没什么大不了的,只要你备份整个网站的所有在一个WP迁移插件,并在现场服务器安装进口,插件会自动替换所有URL。