用 WP-CLI 快速迁移 WordPress 站点

在我们把  freelamp.com 基于  WordPress 架构的AWS 新加坡站点迁移到 freelamp.skyone.net 阿里云华东的时候,使用 wp-cli 让我们快速的实现了站点的迁移。以下是简明步骤:

  1. 首先需要去 AWS 把数据库从 RDS 用 mysqldump 导出,然后把导出的SQL文件拷贝到阿里云站点。
  2. 在阿里云本地创建一个数据库,然后用 grant 命令赋予数据库的用户名和密码。
    grant all on freelamp_dbname.* to dbuser@localhost identified by ‘dbpass’;
    flush privileges;
  3. 由于数据库字符集以及 MySQL 版本的不同,我们需要把 mysqldump 导出的数据库 SQL 文件中的字符集做修改,然后直接导入数据库
    sed -e ‘s/utf8mb4_unicode_520_ci/utf8mb4_unicode_ci/g’ freelamp.sql|mysql freelamp_dbname
  4. 由于 WP 站点有附件等放在 WP 目录下,所以,我们需要把 AWS 站点上的整个 WP 站点目录打包,再下载到阿里云后解压到 Web 的 DocumentRoot 下。 (当然也可以用 rsync 来处理)
  5. 修改 wp-config.php 文件, 把其中的数据库相关的用户名,密码, 数据库名按照我们 grant 语句里的参数做相应的修改。
  6. 如果不出意外的话,在 WP 站点目录下,运行 wp 命令,应该会有帮助提示,而不是报错。如果有报错的话,表示数据库设置有问题,需要确认数据库的设置。
  7. 接下来我们就可以用三条 update 语句,把域名修改一下,整个的 WP 站点就迁移完成了。

$ wp option update siteurl http://freelamp.skyone.net/
Success: Updated ‘siteurl’ option.
$ wp option update home http://freelamp.skyone.net/
Success: Updated ‘home’ option.
$ wp option update fileupload_url http://freelamp.skyone.net/files
Success: Updated ‘fileupload_url’ option.

其他一些 wp 的操作:

如果你不幸忘记了登录的用户名和密码的话, wp 命令也可以直接 reset 口令, 当然也可以添加新的用户。

$ wp user update 123 –display_name=Mary –user_pass=marypass

另外一个用数据库方式修改域名的办法:但是我感觉比较危险。
UPDATE wp_posts SET post_content = REPLACE( post_content, ‘old.site.name’, ‘new.site.name’ ) ;

关于 wp-cli 更详细的一些操作可以查看本站之前的文章:

用 wp-cli 自动部署 WordPress

作者: 甬洁网络

--移动互联网&物联网技术提供商