将 LEMP Wordpress 站点手动迁移到子域以进行测试/开发

Posted

技术标签:

【中文标题】将 LEMP Wordpress 站点手动迁移到子域以进行测试/开发【英文标题】:Manual Migration of a LEMP Wordpress site to a subdomain for testing/development 【发布时间】:2021-12-11 04:49:23 【问题描述】:

出于开发目的,我正在尝试手动将 wordpress 站点迁移到子域。网站太大,无法使用免费的 WP 迁移工具。

如何通过 ssh 手动执行迁移?

到目前为止已完成的步骤:

-创建子域。 -MariaDB 克隆。 -DNS 和 nginx 已确认。 -Wordpress 安装在子域上并正常工作。

从这里开始,这是我尝试过的:

    备份。 通过 ssh 将所有文件从 mainsite 目录复制到 dev.mainsite 文件夹,除了 wp-config.php ???

我的猜测是将现在克隆的子域目录中的 [://website.com] 的所有实例递归查找并替换为 ://dev.website.com ,然后是 [var/www/html 的所有实例/website] 替换为 [var/www/html/dev.website]

我最终尝试了这段代码,将 php 替换为 dev 子域目录中的每个文件类型:

find . -type f -name "*.php" -print0 | xargs -0 sed -i "s/[mainsite]/[dev.mainsite]/g"

find . -type f -name "*.php" -print0 | xargs -0 sed -i "s/var/www/html/mainsite/var/www/html/dev.mainsite/g"

但我不确定执行这些命令的正确语法以避免参数错误,并且不破坏 sub.site - 或者它们是否是我正在寻找的正确命令

我什至接近吗?提前感谢您的帮助!

【问题讨论】:

【参考方案1】:

您的域名不应出现在模板文件中:WordPress 使用函数。

你应该只需要编辑数据库。

安装WP-CLI - 用于将old.com 转换为new.com 的WordPress 命令行工具。

首先:编辑 wp-config.php

define('WP_SITEURL', 'http://new.com');
define('WP_HOME', 'http://new.com');

第二:替换信息

WP-CLI search-replace 命令将转换序列化信息。

首先搜索最长的字符串。

wp search-replace 'http://old.com' 'http://new.com' --all-tables --precise

然后所有出现的旧域。

wp search-replace 'old.com' 'new.com' --all-tables --precise

就是这样。您可以登录新站点。

【讨论】:

这非常有用!使用此工具后,我仍然在 wp 内容文件夹中找到了一些原始 url 的实例。我能够通过新站点根目录中的以下内容清理它们:find . -type f -name ".php" -print0 | xargs -0 sed -i "s,https://oldsite,https://newsite,g"find . -type f -name ".css" -print0 | xargs -0 sed -i "s,https://oldsite,https://newsite,g"

以上是关于将 LEMP Wordpress 站点手动迁移到子域以进行测试/开发的主要内容,如果未能解决你的问题,请参考以下文章

为 wordpress 优化 MariaDB

将 staging 迁移到 Wordpress 网站中的开发后,相关链接断开

sql 更新用于迁移站点的WordPress域(SQL)

wordpress博客站点配置及数据库迁移

Wordpress 数据库和 WP 迁移

sh lemp-wordpress-16-04.sh