网管小贾的博客 / www.sysadm.cc
早些年前我搞了一台阿里的云主机,当时因为促销力度大便宜,为了学习和测试(把我给哄了)一时兴起也就入手了。
只是平时我在地面上忙工作,主机在云上就那么飘着,长时间闲置没空打理,也就渐渐荒废了许久。
也不知道是老天看不下去了还不知怎么,后来我居然能挤出了点时间,也下定了决心要好好学习再利用一番,结果租期大限将至。
有一首老歌唱得好,“等我有了钱的时候我却没时间...“,而我却恰恰相反是有了时间却木有了钱。
其实我就是个屌斯打工人,没有时间更没有钱,时间靠硬挤,那钱呢,现在连一块钱硬币的影子都少见了,你让我怎么把它掰两半儿花,真是呜呼悲哉!
于是乎为了省两个铜板,一边摸着比脸还干净的口袋一边上网找主机,嘿,居然还真被我发现了 SugarHosts 新出的两款价格诱人的迷你主机。
我可不是打广告,为了规避广告嫌疑,我就不上图了,小伙伴们有兴趣可以自行搜索。
一番权衡利弊、内心挣扎之后,我一手蒙着眼一手指向了 Tiny G2 型迷你主机,在合理范围内这一款空间容量更大一些、带宽也更高一些,就它了!
好了,铺垫了这么多,还是来说说网站的迁移过程吧。
没有银子就得多折腾,折腾折腾还就让我遇到了一个坑。
当然此处我要声明这和主机供应商没有关系,只是为了可能有和我有类似需求的小伙伴们好少走些弯路有个参考。
我的网站使用 Joomla ,备份打包使用 Akeeba 。
Akeeba 是 Joomla 的一个备份插件,非常好用,具体可以参考网上的文章。
Akeeba 官网:https://www.akeeba.com/
这里我就不啰嗦如何备份,而是重点说下如何恢复打包好的备份,也就是怎样将备份恢复到新站中。
Akeeba 提供了很多恢复方法,其中有一种比较简单实用,就是 kickstart 。
官网有时会莫名下载失败,我这儿有国内自用的备用下载。
下载链接:https://www.90pan.com/b2267311
提取码:<抱歉,链接失效,若有需要请关注公众号留言>
kickstart 下载下来后解压一共就两个文件,一个是 php 文件,另一个是语言配置文件,其用法也是十分的简单。
首先将备份包和 kickstart 解压出来的两个文件上传到虚拟主机的根目录。
然后用浏览器直接打开 kickstart.php 。
http://主机域名或IP/kickstart.php
出现向导界面,确认目录及备份文件无误后,点击 Start 开始恢复。
程序自动解压所有文件。
稍待片刻解压完成后,点击 Run the Installer 开始后续正式的安装部分。
出现站点环境参数等确认画面,点击右上角的 Next 进入下一步。
接下来是数据库的配置,注意,我就是在这儿栽到坑里的。
通常虚拟主机需要事先建立好数据库以及有对应数据库访问权限的用户,我已经设定好了,所以按照虚拟主机上新建的数据库名称以及用户名密码填入相应栏位。
当我点击右上角 Next 想进入下一步时,出现了警告提示。
当然这个提示并不是坑之所在,它只是警告密码中含有特殊字符,不过一般来说这并不会影响数据库的访问使用。
于是我点下确定继续,然后坑就真的来了!
它居然说我无法创建数据库,我可是已经给用户赋予所有权限的啊!
我又重新检查了一遍,就那么几个设定,确认不是权限问题,但坑还在。
无奈之下我打开了远程访问 MySQL 的功能,成功登录上去后怎么看怎么没毛病。
我远程都能登录上去了,怎么虚拟主机本身就访问失败呢,真是奇哉怪也!
折腾了许久仍不得要领,后来甚至干脆远程导入 SQL ,但这样也没用,因为恢复程序还是需要执行安装动作而无法直接识别数据库是否可以正常使用。
前前后后花了几个小时,实在是折腾得筋疲力尽黔驴技穷了,还是求助客服吧。
后来和客服人员沟通后才发现,虚拟主机只支持一个数据库和一个用户,而数据库只能在控制面板上手动创建,并不支持 SQL 导入。
这就很搞笑了!
当然我并不是说服务不好,相反他们的反馈还是很及时的,感谢他们的协助!
我是想说,我无法从已经打包的备份中找到并提取SQL导入语句,它是一个整体。
此外,我又不能通过恢复备份操作来执行或跳过创建数据库的动作。
这一度让我陷入了两难境地。
怎么办呢?
我折腾了好几个小时,尝试将备份恢复到本地测试环境中,看看能不能有其他办法。
我的思路还是回到了寻找那个神秘的SQL语句文件上。
很遗憾的是,我并没有找到那个带有 Create Database 语句的文件,但却离奇地想到了另一个办法。
那就是同步数据库名称以及用户名。
有点懵是不是,其实就是想办法将旧站点的数据库名和用户名改成与新站相同,然后再打包恢复到新站。
听上去好像既费解又费劲的样子是吧,不过被我找到了一个简便方法。
我发现报错时的那个地址路径是 Installation 下的文件,于是我就去根目录找到了这个目录。
我大胆猜测这个应该是安装文件的所在,里面或许有执行导入的SQL文件。
果不出所料,我惊喜地发现其中有个 sql 目录,进去看看!
原来这里有很多很多的 SQL 文件,但是我告诉你,我找遍了所有这里的文件,都没有创建数据库的语句。
天呐,难道就这样结束了?
我的人生瞬间变成了灰色!
好在天无绝人之路,当我打开第一个名叫 databases.json 的文件时,我突然发现里面保存的是原来旧站的数据库配置信息。
哎?我突然心中一动,改一改这里的配置,让它变成新站的配置可不可行呢?
管不了那么多了,死马当活马医呗,于是将数据库名及用户密码都改成新站的。
好,重头再开始恢复进程,我犹豫颤抖着右手食指点下了继续......
哈哈,奇迹出现了!居然通过了!
激动之余我猜想可能是程序自身并不完善,理想状态下难道不应该是跳过已经创建的数据库再导入数据表进行恢复吗!
好了,现在在数据库名称及用户密码相同的情况下,程序可能认为是原来的站点,连接导入都会正常继续下去。
怎么感觉这程序是不是有点笨呢?
当然,这仅仅是我的猜测。
不过作为一种变相的思路,当你遇到类似的问题又穷途末路之时,我想可以参考尝试这样做也未尝不可。
现如今的站点,使用非常普遍的就那么几个大众款,通常有 WordPress 、Drupal 、Joomla 和 Discuz 等等,而使用的数据库也多半是 Mysql 或 PostgreSQL 等,我想如果遇到这样尴尬的坑应该也有一定的参考价值吧。
最后是顺利完成了恢复,但进入站点后却发现 PHP 版本变成了 7.2 。
7.2 是虚拟主机默认的版本,而我明明记得我已经设定为 7.4 ,有些莫名其妙,难道主机还是有缺陷?
随后回到控制面板将 PHP 版本修改回了 7.4 ,网站警告也随之消失。
这里顺带提醒一下小伙伴们,PHP 版本最好使用 7.3 以上,而 7.3 也将于今年(2021年)底结束支持,注意及时更新哦!
好了,以上就是我遇坑填坑、打怪升级增长经验值的分享,欢迎小伙伴们留言区评论、点赞、在看,我们下一个坑再会!
网管小贾 / sysadm.cc