
事件概述
之前在腾讯云服务器上搭建了一个内部wiki,使用的是docker-wordpress+docker-mysql的搭建方法,如今需要将网站迁移到本地服务器中,这里记录一下操作方法以及踩的一些坑。

数据备份
首先需要将原网站的一些内容备份下来
1.数据库备份并导出
docker exec -it mysql mysqldump -uusername -ppassword -ddatabase > /localpath/wordpress.sql
备注:database为需要导出的数据库名
2.将wordpress容器中的内容导出到本地
docker cp wordpress:/var/www/html/wp-content/ /localpath/

在新的服务器上搭建环境
1.将镜像拉到本地:
docker pull wordpress:latest
docker pull mysql:latest
2.运行镜像:
2.1.首先运行mysql镜像,这里的mysql版本为mysql-8
docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=wordpress -v mysql-data:/var/lib/mysql mysql
备注:--name 为运行后的容器名,默认账户为root,-e MYSQL_ROOT_PASSWORD为mysql登录密码,并创建一个新的数据库名为wordpress
2.2.进入容器:
docker exec -it mysql /bin/bash
2.3.登录数据库:
mysql -uroot -proot
备注:此处密码为-e MYSQL_ROOT_PASSWORD参数设定的密码
2.4.修改数据库密码:
这时可以看到root用户的加密方式为caching_sha2_passoword,而navicat连接所用的方式为native_password。mysql为远程连接和本地连接提供了不同的密码验证方式,因此需要对验证方式进行修改。
use mysql;
select host,user,plugin from users;
备注:
1、修改远程连接数据库密码:
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'remotepassword';
注意:这里修改的密码不是上面-e MYSQL_ROOT_PASSWORD参数设定的密码,而是搭建wordpress时连接数据库的密码,修改后登录数据库密码是不会变的。
2、如果需要修改数据库密码:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'localpassword';
3、另外,如果之前搭过docker的mysql镜像,且存在数据卷(volume)没有清理的话,登录时可能会出现密码错误的情况,这是镜像在加载时使用了现有的数据卷,需要用之前的mysql密码登录,不过如果之前的环境不需要了或者搭载容器失败后想重新搭载,还是建议删除数据卷
查看现有数据卷:
docker volume ls
删除数据卷:
docker volume rm volume-name
2.5.运行wordpress镜像
docker run -d --name wordpress --link mysql:mysql -p 8080:80 wordpress
访问localhost:8080 这里连接数据库时使用的就是remotepassword,注意主机需要改为mysql(你的mysql容器名)
如果是第一次搭建wordpress的话,接下来就设置网站登录账号密码就好,如果是做迁移,之后的注册界面可以随意填写,成功搭建后开始导入备份

导入备份
1.导入网站备份
将本地备份文件拷贝到容器中:
docker cp /localpath/wp-content wordpress:/var/www/html/
进入wordpress容器:
docker exec -it wordpress /bin/bash
修改备份文件的权限:
chwon -R www-data:www-data wp-content
2.导入数据库备份
将本地数据库备份拷贝到容器中:
docker cp /localpath/wordpress.sql mysql:/
登录数据库:
mysql -uroot -plocalpassword
导入备份:
use wordpress
source /wordpress.sql
修改原数据库中的链接:
UPDATE wp_options SET option_value = REPLACE(option_value,‘旧地址’,‘新地址’);
UPDATE wp_posts SET post_content = REPLACE(post_content,‘旧地址’,‘新地址’);
UPDATE wp_posts SET post_excerpt= REPLACE(post_excerpt,‘旧地址’,‘新地址’);
UPDATE wp_postmeta SET meta_value = REPLACE(meta_value,'旧地址','新地址');
至此,网站迁移完毕,网站打开后会有一些配置失效,但在后台自定义修改一下即可,背景图片可能需要从上传内容中重新导入,无需重新上传,模板也可以正常加载。


团队介绍

点击关注银河护卫队super
原文始发于微信公众号(银河护卫队super):docker-wordpress迁移踩坑记录
请登录后发表评论
注册