WordPress搬家与更换域名总结

昨天已经成功把公网上的WordPress所有内容备份,导入到家庭服务器上了。

公网上的内容依旧保持现有的状态,直到2023年的到期,可能我不会再续费了。至于公网上的内容,可能不一定去更新。因为我感觉很多的内容其实不想出现在公众视线,大部分还是自己折腾的自己看的内容,也没有必要出现在公众的视线。

因此,把所有的内容搬回来,安心在自家的家庭服务器上面折腾。

经过几次的WordPress搬家,我总结了一些WordPress搬家更换域名的经验记录下来,以便日后需要时作为参考。

一、WordPress搬家前需要做的事情

1、备份数据库

备份数据库方法:

在 CentOS7 上用的是 MySQL8 备份数据库的老方法是

/opt/rh/rh-mysql80/root/usr/bin/mysqldump -h 127.0.0.1 -R --opt wordpress | gzip > /mysql_backup/wordpress_202110071820.sql.gz

在 Debian10 上用的是 MariaDB10.3 备份数据库非常的简单,因为本地系统登陆数据库是 Unix Socket ,免密登录。

mysqldump wordpress | gzip > /mariadb_backup/wordpress_202110071820.sql.gz;

以前备份的老套路,对于 Debian 来说都是过时的方法。

2、备份网站文件

我们仅需备份 wp-content 这个目录即可

这是将 wp-content 这个目录打包压缩的方法:

tar -czPf /wpbackup/wpcontent_202110071928.tar.gz /www/html/wp-content

或者不用打包压缩,直接备份目录也可以。

二、WordPress搬家与更换域名

1、确定需要更改的域名

明确我们需要更改的域名以及端口号,因为我这里是从阿里云公网上的WordPress内容迁移到自己家庭服务器上面,所以使用了端口号。

WordPress原使用的域名为 https://www.sgtfz.cn

WordPress现使用的域名为 https://sgtfz.cn

2、配置网站数据

首先停止服务器 apache 或 nginx 服务。

下载最新版本 WordPress ,解压,上传网站数据,修改 wp-config.php ,最后修改网站目录权限。

# 进入网站目录
cd /www/html/
# 下载最新版的wordpress
wget https://cn.wordpress.org/latest-zh_CN.tar.gz

# 生成sha1,校对官方sha1
sha1sum latest.tar.gz > latest.tar.gz.sha1sum

# 解压wordpress
tar -xzvf latest.tar.gz

# 删除官方wp-content目录
rm -R /www/html/wordpress/wp-content

# 上传我们备份的wp-content目录文件,使用WinSCP登录普通用户上传,然后复制到指定位置。
# 移动数据到指定目录
mv /home/sgtfz/wp-content /www/html/wordpress/wp-content

# 修改 wp-config.php,先确定数据库名,用户名,密码。并填上。稍后再登录数据库创建数据库名,用户名,密码。
define( 'DB_NAME', '数据库名' );
/** MySQL database username */
define( 'DB_USER', '数据库用户名' );
/** MySQL database password */
define( 'DB_PASSWORD', '数据库用户密码' );

# 修改网站目录及相关文件拥有者权限

# 修改网站目录拥有者为www-data
chown -R www-data:www-data /www/html/wordpress

# 修改wp-config.php文件拥有者为root
chown root:root /www/html/wordpress/wp-config.php

3、配置数据库

创建新的WordPress数据库,用户,密码。然后导入数据库备份文件,修改数据库。

# 登录到 MariaDB
# 创建新的WordPress数据库及用户
create database wordpress;

# 查看已创建的数据库
show databases;

# 创建数据库用户,密码
create user '数据库用户名'@'localhost' identified by '数据库用户密码';

# 查看数据库的用户们
select host,user from mysql.user;

# 授权用户使用数据库
grant all on wordpress.* to '数据库用户名'@'localhost';

# 刷新权限
flush privileges;

# 切换到wordpress数据库
use wordpress;

# 用WinSCP登录普通用户,上传数据库备份文件到服务器
# 导入数据库备份文件
source /home/sgtfz/mysql_202110072026.sql;

# 操作数据库,修改原域名 WordPress地址(URL),站点地址(URL)为现使用的域名
# 列出WordPress原使用的域名
select * from wp_options limit 2;
MariaDB [wordpress]> select * from wp_options limit 2;
+-----------+-------------+----------------------+----------+
| option_id | option_name | option_value         | autoload |
+-----------+-------------+----------------------+----------+
|         1 | siteurl     | https://www.sgtfz.cn | yes      |
|         2 | home        | https://www.sgtfz.cn | yes      |
+-----------+-------------+----------------------+----------+
2 rows in set (0.000 sec)

# 修改为现需使用的域名
update wp_options set option_value = 'https://sgtfz.cn' WHERE option_name='siteurl';
update wp_options set option_value = 'https://sgtfz.cn' WHERE option_name='home';

# 再次列出WordPress使用的域名,验证修改完成。
MariaDB [wordpress]> select * from wp_options limit 2;
+-----------+-------------+------------------------+----------+
| option_id | option_name | option_value           | autoload |
+-----------+-------------+------------------------+----------+
|         1 | siteurl     | https://sgtfz.cn | yes      |
|         2 | home        | https://sgtfz.cn | yes      |
+-----------+-------------+------------------------+----------+
2 rows in set (0.001 sec)

# 至此,我们实际上可以访问网站了,但还得继续修改数据库的 post_content 项的域名为新域名

# 修改 post_content 域名为现使用的新域名。原域名https://www.sgtfz.cn,新域名https://sgtfz.cn
UPDATE wp_posts SET post_content = REPLACE(post_content,'https://www.sgtfz.cn','https://sgtfz.cn');

# 至此,数据库已经修改完成。

# 启动apache或nginx,即可进入网站操作登录wordpress后台。
# 设置→常规→保存

# 由于我还安装了buddypress插件,所以,还需修改一下数据库
UPDATE wp_bp_activity SET primary_link = REPLACE(primary_link,'https://www.sgtfz.cn','https://sgtfz.cn');

UPDATE wp_bp_activity SET content = REPLACE(content,'https://www.sgtfz.cn','https://sgtfz.cn');

UPDATE wp_bp_activity SET action = REPLACE(action,'https://www.sgtfz.cn','https://sgtfz.cn');

# 全部完成任务,完美工作。

# 假如数据库操作有误,我们可以删除了重建,再重新导入数据。

# 删除WordPress数据库
drop database wordpress;
# 删除数据库用户
drop user '数据库用户名'@'localhost';

4、启动服务器的apache或nginx服务,访问网站

只要按照上述的步骤与顺序完成,WordPress搬家与更换域名就非常的顺利完美完成的了。

至于服务器的环境,无论是LAMP或LNMP,这不影响搬家。搭建LAMP或LNMP的方法,这里就不做详细说明了。

发表回复