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
如果没有安装参考另一篇:
第五步:解压备份
进入目录:
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');

浙公网安备 33010602011771号