# 前言这篇文章姑且是用来随手记录了下之前迁移本站点到虚拟主机时遇到的一系列问题和解决方案的,仅对咱自己当时遇到的问题负责,并不保证在任何时刻对任何版本的数据库/phpmyadmin等数据库软件及数据库管理软件有效、不保证对任何主机提供商的设备/服务器程序有效,此外不对由此博文引起的一切直接或间接损失负责

两边的区别

旧设备 新设备 备注
PHP版本 7.2 7.1 / 5.6.38
HTTP服务器版本 Nginx Apache 版本号应该没什么影响
phpMyAdmin版本 4.8.4 4.8.3
操作系统 debian 9 虚拟主机
数据库版本 10.1.37-MariaDB 5.5.60-MariaDB
数据库编码 UTF8mb4-general UTF8mb4-general 默认好像是GBK
数据库名 A B 数据库名不同

# 首先先说说一般流程

  1. 打包所有站点文件
  2. 在旧设备上安装 phpMyAdmin
  3. 使用数据库登陆凭证登陆到原站点的数据库
  4. 备份(导出)数据
  5. 将旧站点设置为关闭模式(防止产生新数据)
  6. 修改解析
  7. 上传站点文件到新站点
  8. 登陆到新服务器数据库
  9. 恢复数据
  10. 调试新站点,确保访问正常(检查 rewrite/ssl/文件权限/数据库 等设置)
  11. 完成(旧服务器可以删库跑路了

之所以选择使用phpMyAdmin的原因是部署简单功能齐全,而且几乎所有的虚拟主机运营商都提供phpMyAdmin的数据库管理面板(正好这次的目标主机用的就是这个)。

注:咱第一次导出时为了防止两边的 phpMyAdmin 版本悬殊造成的不兼容,导出时手动启用了各种看起来可以增加兼容性的选项,后面发现好像不启用也无所谓。。。

# 遇到的问题及解决方法

Q:数据库恢复的时候提示无法找到名为xxx的数据库

A:重新导出;导出时选择自定义,并勾选“重命名导出的数据库/表/列”,然后在新窗口中选择对应数据库并输入新数据库中预计用于存放该数据库的新数据库名,然后点击添加-保存并关闭。

Q:数据库导入后乱码,所有中文都变成了“???”

A:字符串编码错误,清空数据库重新导入,导入前设置数据库的编码方式为UTF8mb4-general(记得点提交>////<)

Q:网站连接不上数据库(忘记修改保存了的密码了。。。)

A:使用文本编辑器修改 wp-config.php 里面的数据库登录信息(推荐先备份原文件)

Q:没办法使用SSL(主机商不支持Certbot自动申请。。。)

A:这个问题有点棘手。。。。折中了一下,咱的解决方案时使用Certbot手动申请证书。。。。并使用Curl把申请到的证书丢进服务器。。。。当时随手写的shell script可以看咱的Github存储库自动实现的部分最近比较懒所以没写

大致就这些?