跨平台、不同版本Wordpress不完美迁移、升级日记

  • 供以后使用

  • 本来自己之前的Wordpress固定链接(伪静态)没有搞好,导致文章的访问路径不好看。此外刚开始编辑网站的时候,部分资源没自动转HTTPS,导致Chrome显示有安全风险,加上网站年久失修,想要趁疫情期间抽空修改一下。网上浏览一些,一键迁移已经很方便了,我这边自己找了很多方法,结合了一下。因为Wordpress的服务器使用的是CentOS7的系统,近期使用Debian较多,所以就在Vultr新开了一个Debian10的系统,配上宝塔比较方便操作。


    ### ***操作步骤***
  • 备份工作,以防万一

    • Vultr原机子创建快照,加上备份
    • Wordpress上设置里Tools->Export导出XML文件,下载到本地
    • 原机子宝塔面板在对应网站备份、数据库备份,下载到本地
    • 原机子通过宝塔面板进入phpMyAdmin,选中网站数据库,自定义默认导出sql文件,下载到本地
    • Wordpress安装UpdraftPlus - Backup/Restore,备份所有,同步云端,下载到本地
  • 新建机子,迁移网站

    • Vultr新建机子,原机子宝塔面板暂停网站运行。DNS解析上将域名对应地址改至新机器的IP,新机子SSH连上安装宝塔面板,默认极速安装,创建相同域名网站(在提示时同时安装FTP, 数据库,数据库编码选utf8emb4),将原来SSL证书部署到新机子上,在面板的网站的伪静态功能选择wordpress。或是通过SSH工具或面板管理里将对应网站下的.htaccess文件修改为如下:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <IfModule mod_rewrite.c>

    RewriteEngine On

    RewriteBase /

    RewriteCond %{REQUEST_FILENAME} !-f

    RewriteCond %{REQUEST_FILENAME} !-d

    RewriteRule . /index.php [L]

    </IfModule>
    • 宝塔的安装结束后,进入phpMyAdmin会发现有Warning,发现错误在一个continue语句需要改成break。用SSH或面板工具到提示的路径文件下,编辑文件,将语句改正警告即可消失。
    • 我用的是SSH,命令行wget下载wordpress压缩包,在对应网站根目录解压。因为是由root操作的,文件夹内的部分为root所有,而这之后会导致WP在安装插件时因用户组的问题导致出现FTP的密码请求问题,这不太友好,所以在SSH登录后到对应网站根目录的上级,将所有者归www, 接着更改权限至775(到面板里调整也可),777感觉太危险了,有说法是WP-Content内部的文件应该开644的,而.htaccess和wp-config.php文件应该为444。
    1
    2
    chown -R www:www Your_Website_Name/
    chmod -R 755 Your_Website_Name/
    • 输入自己的域名,稍等后出现Wordpress安装界面,输入自己设置的数据库信息,成功登录
  • 恢复内容

    • WP在我认知里主要是由网页、插件、主题、Media组成。
    • 进入后先到Settings里把Permalinks里更改固定链接,我是按Post-Name来,这样清爽
    • 在插件里安装UpdraftPlus - Backup/Restore,连接自己的云端,因为我自己想要大改一下网站,所以只恢复了Themes和Uploads,一般根据需要恢复就可以

      Restore1


    • 陆续安装好自己需要的其他插件(或者直接在上一步恢复掉)
    • 接着到Tools的Import里安装WordPress,然后打开导入器,将之前保存的XML文件上传,这样网站的结构和网页就恢复了。而之前云端已经恢复了媒体文件,总体上就大丈夫了
    • 因为我的网站内容之前有HTTP的链接,会出现Mixed Content Error,看不到那安全小锁,所以F12看看对应网页哪些因素是飙黄的警告的,为了方便可以Open一下对应文件内容,看看是哪些图片的问题。之后到对应Post或Page上重新导入图片并贴上去,因为之前设置过跳HTTPS,所以导入链接就是HTTPS的了。保存一下更改,就解决问题了。
    • 也可以安装SSL Insecure Content Fixer插件,在Tools里的Search & Replace页面里输入http://Your_Website_Name, 替换成https://Your_Website_Name, 选择wp_postmeta,然后Dry Run,会显示该目录下包含http的链接,查看无误后,取消勾选Dry Run,再选择Save changes to Database,这样一些不安全的链接会转成HTTPS。其他文件夹我没试过

      Restore2