如何在WordPress中建立开发、预发布和生产工作流程的好方法?

17

WordPress在数据库中保存了太多信息,导致在服务器之间转移时变得困难,这是其中一些挑战。

还有哪些问题需要注意?

你的工作流程是什么样的?


2
你应该在 http://wordpress.stackexchange.com/ 上询问这个问题。 - Graviton
不知道它的存在 :) 谢谢。 - Alex N.
4个回答

5

我在开发服务器上设置了一个单一的WordPress安装,用于驱动多个域名。插件和主题文件也是共享的,因此升级对于所有博客都是一键式的过程。

我使用Apache VirtualHosts将多个域名映射到相同的文档根目录,并在主要的wp-config.php中添加一些魔法来动态设置DB_NAME,基于当前主机(如果需要,我可以发布代码)。

在本地工作时,我只有一个具有root权限的MySQL用户,并将其用于所有我的数据库(不建议在生产服务器上使用!)。

我的本地域名与真实域名相匹配,但带有伪造的TLD。所以在使用example.com时,我设置了一个VirtualHost example.dev

当我准备好上线时,我使用HeidiSQL复制开发数据库,然后替换所有出现的example.devexample.com

复制的数据库现在已经准备好用于生产安装。将本地WordPress安装镜像到生产服务器(复制插件、上传和主题),并使用HeidiSQL(推荐)或phpMyAdmin导入准备好的数据库。
更新
当然,如果您对其中一个进行更改,然后将所有内容复制到另一个,则会丢失您在另一个上所做的任何更改。这不仅适用于WordPress,也适用于生活中几乎任何其他事情!
如果我需要在网站上线后进行重大更改(指不应在生产服务器上执行的更改),我会执行上述相反的过程(从生产环境复制所有内容到开发环境),进行更改,然后再次执行相反的过程。

你如何处理创建新页面和存储在数据库中的配置设置? - blockhead
1
目前,我创建的每个站点都只是一个全新的数据库安装。我想我可以编写一个插件来批量处理一些常见的设置,但每个站点通常都与其他站点非常不同 - 例如页面结构永远不一样,我只是像在WP中正常添加和编辑页面和文章一样。 - TheDeadMedic
我认为你现在偏离了原始问题的范围 - 你真正需要的是一种高级的同步脚本,能够考虑到两个数据库之间的数据变化。 - TheDeadMedic
@blockhead 所有内容都存储在WordPress数据库中。文件是模板和php文件。这些文件保持静态不变,生产后只有数据库会发生变化。 - Chris_O
没错,如果你在开发服务器上创建了新页面,那么它们就不再是代码了。你该如何将它们移动过去?你又该如何移动插件配置和菜单呢? - blockhead
显示剩余9条评论

3

这个问题在WordPress.stackexchange上已经得到了回答。该回答详细介绍了从开发到生产的快速部署最佳实践。


编辑

这就是我在WordPress Answers上添加的相同答案。

可能还有更好的方法,但我会给你两个选择:

1.Use XML Export to export your new posts and comments. Then use the WordPress Importer to import the new posts and comments back into the dev database

It's best to import into dev then move the database over to production because when you import it will download all the new media files from production.

In the meantime production has changed(new posts, new comments, etc.)

This would solve your problem of bringing in any changed content.

2. Use the INSERT IGNORE INTO MySql command to add the new tables from dev. or the REPLACE command to overwrite duplicate rows in the same table.

Before using MySql make a backup of both databases and move the gz database to the production server and upload the dump (change the name of dev if it's the same as production.

INSERT IGNORE INTO `_wp_production_db`.`wp_cool_plugin_options`
SELECT *
FROM `_wp_dev_db`.`wp_cool_plugin_options`

I'm not comfortable with MySql commands so I would go with option 1.


1
天啊,我甚至不知道它的存在(wordpress.stackexchange)...谢谢! - Alex N.
1
然而,那个答案并没有真正涵盖Blockhead先生上面提到的实际双向同步。这也是我最感兴趣的。 - Alex N.

1

我在本地机器上有一个开发站点,并更改了本地hosts文件,以便对实时服务器(www.example.com)的调用指向本地主机。这样,所有对外部文件(jquery等)的调用仍然有效,而且我不必费心通过数据库更改任何内容。 通过wordpress XML导出和导入内容给我带来了最好的结果。

更新: 我使用了http://www.mertyazicioglu.com/projects/wordpress-move/并取得了良好的结果。

JD


0
如果您已经安装了phpMyAdmin,将WordPress站点从一个服务器移动到另一个服务器应该不是问题。只需将数据库导出为tar.gz,并通过FTP复制您的自定义主题(如果您正在使用其中一个),然后在创建新的DB和新鲜的WordPress转储后,重新上传这两个文件到新服务器。在数据库中对主页和博客网址进行2次更改,在wp-config文件中进行2次更改,您就完成了。
我遇到的一个问题是第三方插件。 我最终编写了许多图库和JavaScript小部件,因为第三方插件要么看起来很糟糕,要么速度很慢,要么不按我想要的方式工作。 感谢JQuery。

这并不真正涵盖当你开发时生产环境的内容已经发生改变的情况。 - Alex N.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接