WordPress迁移

  一、Docker镜像文件的迁移  

1.1 源服务器:备份Docker的mysql:80镜像文件

[root@docker ]#docker save -o docker_image_mysql_8.0 mysql:8.0

1.2 源服务器备份Docker的wordpress镜像文件

[root@docker ]#docker save -o docker_image_wordpress wordpress

1.3 源服务器docker_image_mysql_8.0和docker_image_wordpress迁移至目标服务器

[root@docker ]#scp -r -p docker_image_mysql_8.0 new_ip:/tmp
[root@docker ]#scp -r -p docker_image_wordpress new_ip:/tmp

说明:如果没有重新构建过镜像文件,可以直接从Docker Hub重新下载对应版本的镜像文件。

  二、Wordpress后台URL路径修改  

Wordpress后台URL路径修改

  三、Mysql和Wordpress数据文件的迁移  

3.1 目标服务器创建数据存储目录

[root@docker ]#mkdir -p /data/wordpress

3.2 源服务器暂停docker 的mysql和wordpres容器

[root@docker ]#docker stop wp_mysql wordpress

3.3 源服务器:Mysql数据库文件的迁移

[root@docker ]#scp -r -p /data/wordpress/mysql new_ip:/data/wordpress/

3.4 源服务器WordPress数据文件的迁移

[root@docker ]#scp -r -p /data/wordpress/html new_ip:/data/wordpress/

  四、Mysql和Wordpress的镜像文件加载  

4.1 目标服务器:mysql:8.0镜像文件的加载

[root@docker ]#docker load -i /tmp/docker_image_mysql_8.0

4.2 目标服务器:mysql:8.0镜像文件的加载

[root@docker ]#docker load -i /tmp/docker_image_wordpress

4.3 目标服务器:查看镜像文件加载结果

[root@docker ]#docker images

查看镜像文件加载结果

  五、Mysql和wordpress的容器启动  

5.1 目标服务器:启动mysql:8.0容器

[root@docker ]#docker run -d --name wp_mysql \
-v /data/wordpress/mysql:/var/lib/mysql mysql:8.0

5.2 目标服务器:启动wordpress容器

[root@docker ]#docker run -d --name wordpress \
 -v /data/wordpress/html:/var/www/html \
 -p 80:80 --link wp_mysql:mysql \
 -e WORDPRESS_DB_PASSWORD='mysql_password' wordpress

5.3 目标服务器:访问http://new_ip:80

  六、迁移后问题点修复  

6.1 迁移后,发现文件上传大小限制恢复了默认值,重新添加修改

[root@docker ]#vim /data/wordpress/html/.htaccess
php_value upload_max_filesize 64M
php_value post_max_size 64M

6.2 迁移后,发现文件上传失败

文件上传失败

原因分析:

    a  目标服务器:进入wordpress容器,查看进程信息

[root@docker ]#docker exec -it wordpress bash
root@0cf7df8476e3:/var/www/html# ps aux

查看进程信息

    b  目标服务器:从上图可以发现,运行apache进程的用户是‘www-data’,UID是‘33’,然后我们查看wordpress根目录的权限。

根目录的权限

    c  目标服务器wordpress的根目录‘html’,目录属主属组是root,所以apache进程没有修改的权限,导致无法上传文件

问题解决:

    目标服务器:因此修改‘html’目录的属主属组即可。

[root@docker ]#chown -R 33:33 html

6.3 迁移后,文章图片无法显示

说明:由于wordpress迁移后,Mysql的URL路径没有修改,导致网站或者图片无法正常显示。

方法:进入docker-mysql容器内部,直接用SQL语句进行数据库信息修改。

[root@docker ]#docker exec -it wp_mysql bash
root@40df271ff514:/# mysql -uroot -p'mysql_password'

    目标服务器修改站点的URL和主页地址

    (如果迁移前,在Wordpress后台的URL链接有修改,此处可以不修改)

查看:

mysql>SELECT option_value FROM wp_options 
WHERE option_name = 'home' OR option_name = 'siteurl';

修改:

mysql>UPDATE wp_options SET option_value = replace
(option_value,'http://源地址','http://目标地址')
WHERE option_name = 'home' OR option_name = 'siteurl';

    目标服务器修改文章内部连接和附件地址

查看:

mysql>SELECT post_content FROM wp_posts;

修改:

mysql>UPDATE wp_posts SET post_content = replace
(post_content,'http://源地址','http://目标地址');

     c 目标服务器修改文件默认的永久链接

查看:

mysql>SELECT guid FROM wp_posts;

修改:

mysql>UPDATE wp_posts SET guid = replace
(guid,'http://源地址','http://目标地址');

    d 目标服务器修改评论中的连接地址

查看:

mysql>SELECT comment_author_url FROM wp_comments;

修改:

mysql>UPDATE wp_comments SET comment_author_url = REPLACE
(comment_author_url,'http://源地址','http://目标地址');

至此,Docker安装方式的wordpress迁移并设置完成,可以正常使用。

Jimmy's Blog ,版权所有丨如未注明,均为原创丨本网站采用BY-NC-SA协议进行授权,转载请注明转自:https://www.xjimmy.com/wordpress_migrate.html

Leave a Comment