WordPress迁移

WordPress 是 Docker 部署,并且网站数据都保存在宿主机挂载目录中,本质上就是:复制 Docker 配置 + WordPress 文件 + MySQL 数据目录

假设你的服务器目录结构如下:

/root/wordpress/
├── docker-compose.yaml
├── mysql/
└── wp-content/

其中:

mysql/        # MySQL数据库文件
wp-content/    # WordPress网站文件

第一步:停止旧服务器容器

先停止写入,防止数据库损坏。

进入目录:

cd /root/wordpress

停止容器:

docker compose down

查看:

docker ps -a

确保容器已经停止。

第二步:打包数据

当前目录:

pwd

例如:

/roor/wordpress

打包:

tar -czvf wordpress-backup.tar.gz \
docker-compose.yaml \
mysql \
wp-content

查看大小:

ls -lh wordpress-backup.tar.gz

例如:

-rw-r--r--. 1 root root 95M 6月   4 13:40 wordpress-backup.tar.gz

第三步:传输到新服务器

使用 SCP:

scp wordpress-backup.tar.gz root@新服务器IP:/root/

例如:

scp wordpress-backup.tar.gz root@192.168.1.100:/root/

如果文件较大(几 GB):

推荐 rsync:

rsync -avP wordpress-backup.tar.gz root@新服务器IP:/root/

支持断点续传。

第四步:新服务器安装 Docker

查看:

docker -v
docker compose version

如果没有安装参考另一篇:

 CentOS7安装Docker - HIYK - 博客园

第五步:解压备份

进入目录:

cd /root/wordpress

解压:

tar -xzvf /root/wordpress-backup.tar.gz

得到:

/root/wordpress
├── docker-compose.yaml
├── mysql/
└── wp-content/

第六步:检查目录权限

WordPress:

chown -R 33:33 wordpress

或者:

chmod -R 755 wordpress

MySQL:

chown -R 999:999 mysql

说明:

  • mysql:8.x 默认 UID 通常为 999
  • wordpress/apache 默认 UID 通常为 33

如果不确定,可以后面启动失败再调整。

第七步:启动容器

进入目录:

cd /root/wordpress

启动:

docker compose up -d

查看:

docker ps

应该能看到:

wp-mysql
wp-content

状态:

Up

第八步:检查日志

MySQL:

docker logs wp-mysql

WordPress:

docker logs wp-service

确认没有报错:

ready for connections
Apache started

第九步:修改域名解析

如果换了服务器 IP:

例如:

blog.xxx.com

到 DNS 服务商修改:

A记录
旧IP → 新IP

等待解析生效。


第十步:检查 WordPress 地址

如果域名变了:

例如:

旧:
https://abc.com

新:
https://blog.abc.com

需要修改数据库:

进入 MySQL:

docker exec -it wp-mysql mysql -uroot -p

选择数据库:

USE wordpress;

查看:

SELECT * FROM wp_options
WHERE option_name IN ('siteurl','home');

修改:

UPDATE wp_options
SET option_value='https://新域名'
WHERE option_name='siteurl';

UPDATE wp_options
SET option_value='https://新域名'
WHERE option_name='home';

 如果没有域名,是IP改变了:

UPDATE wp_options
SET option_value='https://新IP'
WHERE option_name='siteurl';

UPDATE wp_options
SET option_value='https://新IP'
WHERE option_name='home';

 图片数据库路径是旧 IP(文章内容里)

WordPress 文章内容里可能写死了:

http://旧IP/wp-content/uploads/...

一键替换(推荐)

UPDATE wp_posts
SET post_content = REPLACE(post_content,'http://旧IP','http://新IP');
posted @ 2026-06-04 14:34  HIYK  阅读(15)  评论(0)    收藏  举报