开发,测试和发布


10

您如何开发,测试和部署生活中的Wordpress网站?

我发现这总是有些麻烦,尤其是在涉及数据库的情况下-主要是因为拥有测试站点需要部署一个全新的数据库,有时所有数据库都可以完全相同,只是所有链接都更改为测试网站网址,而不是实时网站。

同样,自上次您需要修复错误或开发新内容以来,用户上传的所有上传内容都必须复制到测试站点。

别人怎么做?你只是忍受别人吗?您是否使用巧妙的版本控制系统有帮助?

谢谢


如果您使系统围绕更改您的hosts文件着手,那么您就不必再浪费测试数据库了。(wordpress.stackexchange.com/a/10943/9142
亚历山大·伯德

Answers:


12

部署工作流程中包含一些个人理念。不知道您在服务器和版本控制方面的经验,您的操作系统,托管,客户端的经验和技术文化等情况下,要彻底回答这个问题并非易事。

  1. 这是一个有很多解释的类似问题
  2. 对于内容部署,您可以查看Crowd Favorite的RAMP插件
  3. WP Hackers是查找有关部署的良好信息的好线程。

就个人而言,我确保我绝不会在主题中对绝对URL进行硬编码。使用bloginfo()或编码相对URL。我在wp-config.php文件中使用了很多条件语句。这是我的wp-config编辑的原始版本。

switch($_SERVER['SERVER_NAME']){
    case 'dev.yourdomain.com':
        $db_host = '';
        $db_pass = '';
        //define debugging
        break;
    case 'stage.yourdomain.com':
        $db_host = '';
        $db_pass = '';
        break;
    default: //Live
        $db_host = '';
        $db_pass = '';
}
define('DB_PASSWORD', $db_pass);
define('DB_HOST', $db_host);

//You could also set this as a variable above
define('WP_HOME', 'http://'.$_SERVER['SERVER_NAME']));
define('WP_SITEURL', 'http://'.$_SERVER['SERVER_NAME']));

我在许多网站上关注

  • 我的笔记本电脑网络服务器上的本地(个人黑客:))>
  • 开发人员(在客户端服务器上测试)>
  • 阶段(质量检查的稳定来源-内容编辑)>
  • 生产(现场)

最后,我建议您使用版本控制工具来协助您的部署,例如GIT或SVN。它极大地简化了流程,并维护了环境之间的源完整性。通过舞台和生产上的命令行,可以轻松更新对本地的承诺。最好在发现过程中定义您和客户端从一开始便要使用的版本控制(如果有开发人员在项目上工作)。我个人使用GIT进行版本控制。但是,如果客户使用SVN,则我会在本地进行SVN混合处理,因此我会为自己维护一个回购协议,同时还要提交他们的回购协议。

从一个环境迁移到另一个环境的问题很少。我们在数据库中进行查找/替换以相应地更改嵌入式媒体等的URL。


这非常有用!:) 非常感谢你。因此,每次部署到每台不同的服务器时,是否都从活动站点中复制数据库?您说您已部署到登台服务器(stage.domain.com)进行质量检查和内容编辑。如果在现场站点上运行舞台服务器时数据库发生更改,会发生什么情况?也就是说,您或您的客户登录到舞台并更新了一些内容,但同时有一名贡献者在实时站点上发布了新文章?您是否只是在实时站点上再次执行内容编辑?您如何应对数据库结构更改?
Thomas Clayson

对不起所有问题!:p我非常感谢您的时间和帮助。
Thomas Clayson

在新功能集上,您可以从prod> stage中拉出。添加新功能的内容,然后推回stage> prod。从那里开始,stage是prod的高保真副本,您可以选择stage> dev。我们通常不会将数据库撤出舞台。除非某个功能更改了数据库体系结构,否则与数据库的大多数交换都是在阶段之间进行的。
Brian Fegter 2011年

如果您想使用舞台进行内容部署而从不接触产品,可以查看我之前发布的RAMP插件。
Brian Fegter 2011年

+1以上所有内容,附带条件是某些令人讨厌的插件坚持将URL存储在序列化数组中,这可能会使将内容从一个环境的数据库移动到另一个环境的数据库变得混乱。问题在于,序列化数组存储字符串长度,并且在长度更改时会变坏。因此,我建议你保持env的域名在所有可能相同的,如果,例如dev.example.com,tst.example.com,www.example.com等
webaware
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.