【问题标题】:How do I migrate a wordpress subsite from a staging to a live server (on wordpress multisite)?如何将 wordpress 子站点从登台迁移到实时服务器(在 wordpress 多站点上)?
【发布时间】:2014-05-26 17:51:04
【问题描述】:

我在安装了 wordpress 多站点的 wordpress 网站上工作。现在我正在从在实时服务器上开发切换到使用暂存服务器,然后在一切完成后推送到实时服务器。

当然,现在必须以某种方式为每个环境迁移和更新数据库(可能是两种方式;拉到登台以启动并推送到现场以进行部署)。但也必须迁移主题、模板和资产。

由于我是新手,我不知道这通常是如何完成的。我正在寻找一个安全实用的解决方案。例如,我已经研究过将 grunt(我已经用于其他任务)与 grunt-wordpress-deploy 一起使用,但它似乎并没有做我想做的所有事情。

所以我的问题是:我该怎么做?如何在我的暂存服务器和实时服务器之间安全轻松地同步 wordpress 子站点?

【问题讨论】:

  • 为什么不用简单的上传然后直接SQL查询呢?
  • @ObmerkKronen:我不知道,这是最简单的方法吗?您知道我可以定位的数据库中的子站点是否有任何特定前缀?还是只是简单的搜索和替换?

标签: php mysql database wordpress web-deployment


【解决方案1】:
  1. 进入网络管理员并找到您要移动的站点的 ID(在下面的示例中 - 17)

  2. 现在您想转移整个wp-content folder -> uploads -> Sites -> site_id(在这种情况下为wp-content folder -> uploads -> Sites -> 17,当然您需要在新服务器上安装wp - 请参阅附录)

  3. 在网络上的原始站点,检查它使用什么主题。 FTP到主站点wp-content folder -> Themes并下载/传输它使用的主题。 (或见下文附录)

  4. 对插件做同样的事情,转到原始站点仪表板,看看它使用了哪些插件。不要忘记检查激活了哪些插件 NETWORK WIDEmu-plugins 并转移它们。出于兼容性的原因,我总是喜欢转移我以前使用的那些,而不是从 wp 存储库下载。更新可以并且将在以后进行。现在 , 最好 保持 所有 版本 与 原版 相同 .

  5. 导出/导入数据库(例如使用 PhpMyAdmin)然后重命名表:

(注意最后两个 - 这些是来自主网络数据库的表 - 不是特定于站点的)

Rename table wp_multi17_commentmeta to wp_newsite_commentmeta;
Rename table wp_multi17_comments to wp_newsite_comments;
Rename table wp_multi17_links to wp_newsite_links;
Rename table wp_multi17_options to wp_newsite_options;
Rename table wp_multi17_postmeta to wp_newsite_postmeta;
Rename table wp_multi17_posts to wp_newsite_posts;
Rename table wp_multi17_terms to wp_newsite_terms;
Rename table wp_multi17_term_relationships to wp_newsite_term_relationships;
Rename table wp_multi17_term_taxonomy to wp_newsite_term_taxonomy;
Rename table wp_multiuermeta to wp_newsite_usermeta;
Rename table wp_multiusers to wp_newsite_users;
  1. 之后,我们执行正常的 wp update sql

像这样:

**
To update WordPress options with the new blog location, use the following SQL command:
 note that this depends also on your folder structure ( wp in own folder here, not root )
**/

UPDATE wp_newsite_options SET option_value = replace(option_value, 'www.oldnetwork.com/multi', 'www.newsite.com/newsite') WHERE option_name = 'home' OR option_name = 'siteurl';

/**
After that you will need to fix URLs of the WordPress posts and pages, which translated from post slug, and stored in database wp_posts table as guid field. The URL values in this field are stored as absolute URLs instead of relative URLs, so it needs to be changed with the following SQL query:
**/

UPDATE wp_newsite_posts SET guid = replace(guid, 'www.oldnetwork.com','www.newsite.com/newsite');

/**
If you have linked internally within blog posts or pages with absolute URLs, these links will point to wrong locations after you move the blog location. Use the following SQL commands to fix all internal links to own blog in all WordPress posts and pages:
**/

UPDATE wp_newsite_posts SET post_content = replace(post_content, 'www.oldnetwork.com/multi', 'www.newsite.com/newsite');

完成 - 之后 - 你的新网站应该没问题。

但是 - 可能存在一些残留物(由于特定的插件/主题),因此也可以搜索/替换 originalname.comwww.originalname.comsites/17 ..

这个过程,当被理解时 - 可以很容易地适应(反转)也可以反过来转移(从单个到多个)

附录

如果您有一个包含大量内容(例如图像)的大型站点 - FTP 可能需要太长时间。 直接在服务器上做会快很多,所以我就在这里添加。

  • 登录到 cpanel(或其他)、文件管理器,然后 tar 整个 uploads/site_id(17 - 还记得吗?) 文件夹
  • 在腻子中

(或新位置上的其他 SSH)

[\] #cd home/account-name/public_html
  • 然后

    wget -m http://www.old-multi-domain-path/wp-content/uploads/sites/site-id.tar

(或 zip,或 rar 等……)

您可能会在名为 www.old-multi-domain-path/wp-content/uploads/sites/site_id.tar 的文件夹中获取文件

现在,把它移到根目录,然后删除文件夹

rm -rf www.old-multi-domain-path/

  • 现在 ftp wordpress 到新服务器(或者如果您更喜欢只使用最新版本 - 但由于兼容性问题不建议使用。最好稍后再升级)

wget http://wordpress.org/latest.tar.gz

现在回到阶段3.

【讨论】:

  • 哇,这是一个非常彻底的答案。谢谢!
猜你喜欢
  • 2018-12-11
  • 1970-01-01
  • 2020-08-24
  • 1970-01-01
  • 2012-01-08
  • 2015-10-09
  • 2014-02-20
  • 2018-04-14
  • 1970-01-01
相关资源
最近更新 更多